PHP 5.2から導入されたfilter_var関数で入力された値を検証する

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

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください