PHP5.2で追加されたfilter_var()関数
PHP5.2から、filter_var()という、おせっかい(?)な関数が追加された。
これを使用すると、以下のような感じでURLやメールアドレス、IPアドレスの入力チェックができる。
filter_var()によるURLのチェック
if (filter_var($url, FILTER_VALIDATE_URL)) {
print '有効なアドレスです。';
}
マニュアルを調べると、FILTER_VALIDATE_URLの部分には他にもいくつかの検証用フィルターが定数として定義されている。
filter_var()によるメールアドレスのチェックは。。。
これらのフィルターの中には、FILTER_VALIDATE_EMAILというメールアドレス用のフィルタも定義されていた。
<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
echo "(email_a) はメールアドレスとして有効です。";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
echo "(email_b) はメールアドレスとして有効です。";
}
?>
しかーーーし、これでは我が国では不十分。
念のため、悪名高いDocomo風のメールアドレスを通してみると、やっぱりfalseがかえってきた。
echo filter_var('docomo.@example.com' FILTER_VALIDATE_EMAIL);
というわけで、使えそうで使えないfilter_var()でした。
ちなみに
こういう関数って、実装そのものは面白いんだけどコア関数として追加してしまうのはどうかと思う。
おせっかいでしょ、やっぱ。
と言いつつ使っちゃったけど。。。