関数の概要
filter_input_arrayは、PHPで複数の入力値をまとめて取得し、それぞれに対してフィルタ処理を行うための関数です。主に外部からの入力データ(GET、POST、COOKIEなど)を安全に受け取る際に利用され、複数の変数を一括して検証・サニタイズできます。
パラメータの説明
$type(必須):入力タイプを指定します。例としてはINPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENVがあります。$definition(必須):フィルタリングの設定を配列で指定します。キーが入力名、値がフィルタIDやオプションの配列となります。$add_empty(任意):指定された入力変数が存在しない場合に空の値を返すかどうかを指定するブール値。デフォルトはfalse。
戻り値
成功すると、指定した複数の入力フィールド名をキー、フィルタリング後の値を値とした連想配列を返します。
入力名が存在しない場合やフィルタが失敗した場合、そのキーの値は false または null になることがあります。
エラー時は false を返します。
使用例
基本的な使い方
<?php
$filters = [
'username' => FILTER_SANITIZE_STRING,
'age' => FILTER_VALIDATE_INT,
'email' => FILTER_VALIDATE_EMAIL,
];
$input = filter_input_array(INPUT_POST, $filters);
var_dump($input);
?>
POST送信されたのデータをまとめて取得し、usernameは文字列のサニタイズ、ageは整数、emailはメールアドレスとして検証します。
フィルタオプションを使う例
<?php
$filters = [
'age' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['min_range' => 1, 'max_range' => 120],
],
'website' => FILTER_VALIDATE_URL,
];
$input = filter_input_array(INPUT_GET, $filters);
?>
GETパラメーターのageを1から120までの整数として検証し、websiteはURL形式で検証します。
すべての入力をサニタイズする例
<?php
// 全部を文字列としてサニタイズ
$input = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
var_dump($input);
?>
この例では、POSTの全入力フィールドをサニタイズ処理し、HTMLタグなどを取り除きます。単一フィルタを指定すると全てのinputにそのフィルタが適用されます。
関連する関数
filter_input— 単一の入力値をフィルタ処理するfilter_var— 任意の変数に対してフィルタ処理を行うfilter_var_array— 配列変数をまとめてフィルタ処理する
まとめ
filter_input_arrayは、PHPで複数のユーザー入力をまとめて安全に処理するのに非常に便利な関数です。各入力値に適したフィルタやオプションを設定でき、コードの見通しを良くしながらエラーや不正な値の検出もしやすくなります。初心者から実務レベルまで活用できる基本関数なので、ユーザー入力のバリデーション処理にはぜひ使いこなしたい機能です。
