PHPのfilter_var()で入力チェック


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()でした。

ちなみに

こういう関数って、実装そのものは面白いんだけどコア関数として追加してしまうのはどうかと思う。

おせっかいでしょ、やっぱ。

と言いつつ使っちゃったけど。。。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>