正規表現、やっぱり苦手です。
得意な方お願いします。
URLが正しいかどうかチェック
if (preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $url)) {
return true;
} else {
return false;
}
これだと、
http://www
がとおってしまいます(´・ω・`)
上記のサイトは Perl に関してのものだが、preg_match は Perl 互換の関数なのでほとんどそのまま使えるはず。
見てのとおりまじめにやろうとするとバカ長くなるので必要な部分のみもってくればいいと思う。
正規表現だけでカンペキに、と言うのは困難だと思いますが、簡易的に「ドット + トップレベルドメイン」で終わってないものをはじくとか。
preg_match("{s?https?://([-_.!~*'()a-z0-9;/?:@&=+$,%#]+)\.[a-z]+$}i", $url)
今のところトップレベルドメインに使われているのはアルファベットだけのようなので [a-z] にしましたが、
将来的には分かりません。
また http://localhost/ もはじいてしまうので、これも通すならもう一捻り必要です。
上記のサイトは Perl に関してのものだが、preg_match は Perl 互換の関数なのでほとんどそのまま使えるはず。
見てのとおりまじめにやろうとするとバカ長くなるので必要な部分のみもってくればいいと思う。
ありがとうございます。
参考になります。
http://www.din.or.jp/~ohzaki/perl.htm#httpURL
Perlメモ-http URL の正規表現
preg_matchはperl互換の正規表現ですから、引用符に気を付けて翻訳すればそのまま使えますよ(一番最後に書いてある簡易版でも、それなりに動きます)。
ありがとうございます。
ありがとうございます。
参考になります。