人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【PHP 4.3.9 正規表現】

正規表現、やっぱり苦手です。
得意な方お願いします。


URLが正しいかどうかチェック

if (preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $url)) {
return true;
} else {
return false;
}


これだと、
http://www
がとおってしまいます(´・ω・`)

●質問者: caster777
●カテゴリ:インターネット ウェブ制作
✍キーワード:(´・ω・`) FTP HTTPS PHP URL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GoldenDawn
●27ポイント

正規表現だけでカンペキに、と言うのは困難だと思いますが、簡易的に「ドット + トップレベルドメイン」で終わってないものをはじくとか。

preg_match("{s?https?://([-_.!~*'()a-z0-9;/?:@&=+$,%#]+)\.[a-z]+$}i", $url)

今のところトップレベルドメインに使われているのはアルファベットだけのようなので [a-z] にしましたが、

将来的には分かりません。

また http://localhost/ もはじいてしまうので、これも通すならもう一捻り必要です。

◎質問者からの返答

ありがとうございます。

なるほど、

http://localhost/

の事は忘れていました(*_*)

ん?ちょっと考えてみます。

ありがとうございました。


2 ● b-wind
●35ポイント ベストアンサー

Perlメモ

上記のサイトは Perl に関してのものだが、preg_match は Perl 互換の関数なのでほとんどそのまま使えるはず。

見てのとおりまじめにやろうとするとバカ長くなるので必要な部分のみもってくればいいと思う。

◎質問者からの返答

ありがとうございます。

参考になります。


3 ● mattz
●18ポイント

http://www.din.or.jp/~ohzaki/perl.htm#httpURL

Perlメモ-http URL の正規表現

preg_matchはperl互換の正規表現ですから、引用符に気を付けて翻訳すればそのまま使えますよ(一番最後に書いてある簡易版でも、それなりに動きます)。

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ