phpspotの人は正規表現について語らないほうがいいのでは

「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、

8 Practical PHP Regular Expressions - Web devlopment blogという、今日del.icio.us/popularに出ていた記事の紹介がされている。このサイトの記事はいつもそうだけど、はてなブックマークでも人気で、既に50名を越えるユーザにブックマークされているようだ

1 メールアドレスチェック
$string = "first.last@domain.co.uk";
if (preg_match(
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$string)) {
echo "example 3 successful.";
} 

これは、"example@so-net.ne.jp"とか"example+tracer@gmail.com"をメールアドレスではないと判定する。この簡単さだと、メールアドレスじゃないものを通してしまう取りこぼしも多いはず。

2 IPアドレス
$string = "255.255.255.0";
if (preg_match(
'/^(([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+))$/',
$string)) {
echo "example 5 successful.";
} 

これなどは、サンプルの"255.255.255.0"が既に動かない。どういうこと?

さらに言うと、以下のようなケースも通してくれる。

  • "999999999999.255.255.10"
  • "000.255.255.10"
  • "11111111111.22222222222.33333333.44444444"

チェックになってない…

この人、以前にも正規表現のいいかげんな記事を書いていろいろ突っ込まれている。

メールアドレスのチェックってそんな簡単なものじゃないはず。

突っ込まれた肝心の記事は見つからなくなっている。でも依然として「PHP 正規表現」で検索すると当該のURLが上位に出てくるので影響は大きい。

これは提案なんだけど、突っ込まれたらちゃんと勉強しなおして正しい記事にするか、手に負えないと思ったらせめてより正確な記事を紹介するのがみんなのためなんじゃないかな。

Diggのトップページやdel.icio.us/popularで表示されたページの概要を訳しているだけなんだから、せめて自分で確かめてから紹介しようよ。僕も正規表現は苦手だけど、今回のはコピーして動かすだけでおかしいとわかるじゃない。(得意な人なら動かさなくてもわかりそうだが)

まあ、このエントリもphpspotメソッドで対処されそうな気もするけど。

[参考]

phpspotメソッド

[2007.10.22 追記]

phpspotの件の続報

phpspotの件のまとめ