filter_var関数
PHP 5.2.0からfilter_var関数を使って値を簡単に検証できるようになりました。
メールアドレスの検証や、数値の範囲チェックなどの処理を一貫した書き方で記述できます。
filter_var関数の使用例を紹介します。
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
filter_var関数の最初の引数に検証する値、2番目の引数に検証方法を指定します。
2番目の引数に使用できる検証方法は「マニュアルの検証フィルタ」にまとまっています。
メールアドレスが正しいかどうかを検証する
$var = 'bob@example.com'; //検証するメールアドレス
if (filter_var($var, FILTER_VALIDATE_EMAIL) === false) {
echo('メールアドレスが不正です。');
}
入力された値が整数かどうかを検証する
$var = '123'; //検証する値
if (filter_var($var, FILTER_VALIDATE_INT) === false) {
echo('入力された値は整数ではありません');
}
入力された整数の範囲を検証する
filter_var関数の3番目の引数で範囲を指定します。
$var = '99'; //検証する値
$range = array(//検証する範囲
'min_range'=>10, //最小値
'max_range'=>20 //最大値
);
if (filter_var($var, FILTER_VALIDATE_INT, array('options'=>$range)) === false) {
echo('入力された値は範囲内の整数ではありません');
}
検証に失敗したときに返す値を指定できます。
$var = '99'; //検証する値
$options = array(
'min_range' => 10, //最小値
'max_range' => 20, //最大値
'default' => 0 //検証に失敗したときに返す値
);
var_dump(filter_var($var, FILTER_VALIDATE_INT, array('options' => $options))); //=>0
複数の値をまとめて検証する
複数の値をまとめて検証するときはfilter_var_array関数を使用します。
//検証する値
$data = array(
'email' => 'bob@@example.com',
'age' => 120,
);
//検証方法
$args = array(
//emlはメールアドレスがどうかを検証する
'email' => FILTER_VALIDATE_EMAIL,
//ageは18以上99以下の整数かどうかを検証する
'age' => array(
'filter' => FILTER_VALIDATE_INT,
'options' => array(
'min_range' => 18, //最小値
'max_range' => 99, //最大値
)
)
);
var_dump(filter_var_array($data, $args));
実行結果
array (size=2)
'email' => boolean false
'age' => boolean false