解決済み

Perl正規表現でURLの末尾が/かどうか調べる

  • すぐに回答を!
  • 質問No.5370372
  • 閲覧数490
  • ありがとう数7
  • 気になる数0
  • 回答数6
  • コメント数0

質問者が選んだベストアンサー

  • 回答No.6

ベストアンサー率 51% (3827/7415)

>preg_match_allなどにすると使えません。

運用方法の例示がなかったもので・・・

これでどう?
<?
$html=<<<eof
http://example.com/
http://example.com
http://example.com/foo.html
http://example2.com/
http://example2.com
http://example2.com/foo.html
eof;
$pattern="/^http:\/\/[^\/]+$/m";
$matchs=preg_match_all($pattern,$html,$matches);
print_r($matches);
?>

これが文中にある場合・・・たとえば
<a href="http://example.com/">example</a>
から抜き出したいとかってなるとまた別のパターンになります。

仕様はもっときちんと提示してほしい
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。yambejpさんのお陰で解決いました。
これは、要求されたURLがファイル名で終わるもの以外、/がついてるかどうかを判別するものです。
もし/がついていなければ、Locationヘッダで/がついてるものに飛ばします。
投稿日時 - 2009-10-16 11:59:33
感謝経済、優待交換9月20日スタート

その他の回答 (全5件)

  • 回答No.5

ベストアンサー率 51% (3827/7415)

Perl互換ってPCREという意味でしょうか?
仕様がいまいちわからないですがとりあえず例示から類推すれば

<?
$urls=Array(
"http://example.com/"
,"http://example.com"
,"http://example.com/foo.html"
);
$pattern="/^http:\/\/[^\/]+$/";
$matchs=preg_grep($pattern,$urls);
print_r($matchs);
?>
補足コメント
ralris

お礼率 61% (8/13)

preg_grep関数のままだと動作しますが、
このパターンをpreg_match_allなどにすると使えません。
投稿日時 - 2009-10-16 09:50:17
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。
皆さんのお陰で解決しました。
投稿日時 - 2009-10-16 13:06:43
  • 回答No.4

ベストアンサー率 38% (124/325)

>>それはeregではないですか?
 ということはPHPとかを良くご存じかと思います。

 スラッシュが2つだけのをOKにする正規表現ではどうでしょうか。

 行頭を ^http にして、末尾を html,html,cgi,php等をNGにするか、ドメインのcom,jp,net,org等をOKにするのもありますが、任意な拡張子をphp/cgiにすると、index.com も含まれてしまうので、スラッシュ2つのみの方が良いと思いました。
補足コメント
ralris

お礼率 61% (8/13)

example.comの部分は固定で、ファイル名と拡張子が変わります。
投稿日時 - 2009-10-16 09:39:06
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。
皆さんのお陰で解決しました。
投稿日時 - 2009-10-16 13:06:57
  • 回答No.3

ベストアンサー率 23% (3656/15482)

ああ, #2 だと全てにマッチしちゃいますね.
m!^http://example.com$!
でしょうか.
補足コメント
ralris

お礼率 61% (8/13)

それはeregではないですか?
perl互換でお願いします。
投稿日時 - 2009-10-16 08:55:40
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。
皆さんのお陰で解決しました。
投稿日時 - 2009-10-16 13:07:13
  • 回答No.2

ベストアンサー率 23% (3656/15482)

補足コメント
ralris

お礼率 61% (8/13)

それはeregではないですか?
perl互換でお願いします。
投稿日時 - 2009-10-16 08:49:26
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。
皆さんのお陰で解決しました。
投稿日時 - 2009-10-16 13:07:28
  • 回答No.1

ベストアンサー率 38% (124/325)

どの2つなのかを明記しないと分からないと思います。
補足コメント
ralris

お礼率 61% (8/13)

2)だけマッチさせたいのです。
投稿日時 - 2009-10-16 08:32:08
お礼コメント
ralris

お礼率 61% (8/13)

ありがとうございます。
皆さんのお陰で解決しました。
投稿日時 - 2009-10-16 13:07:41
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ