Php/docs/function.filter-input-array

提供:Dev Guides
< Php
移動先:案内検索

filter_input_array

(PHP 5 >= 5.2.0, PHP 7)

filter_input_array外部から変数を受け取り、オプションでそれらをフィルタリングする


説明

filter_input_array ( int $type [, array|int $options = FILTER_DEFAULT [, bool $add_empty = true ]] ) : array|false|null

この関数を使用すると、大量のデータを取得する際に filter_input() を繰り返しコールする必要がなくなるので便利です。


パラメータ

type

INPUT_GETINPUT_POSTINPUT_COOKIEINPUT_SERVER あるいは INPUT_ENV のいずれか。

options

引数を定義する配列。配列のキーとして使用できるのは 変数名を string で表したものです。 対応する値に使用できるのは、フィルタの型か配列 (フィルタ・フラグ・オプションを指定したもの) です。 配列の値として配列を使用する場合に使用できるキーは、 filter (フィルタの型)、 flags (フィルタに適用するフラグ) および options (フィルタに適用するオプション) です。理解を深めるために、以下の例を参照ください。

このパラメータには、フィルタ定数 を表す整数値を指定することもできます。 こうすると、入力配列のすべての値がそのフィルタで処理されます。

add_empty

存在しないキーは null として返り値に追加します。


返り値

成功した場合は要求された変数の値を含む配列。 FILTER_NULL_ON_FAILURE フラグが指定されない場合、 かつ type で指定された入力値の配列が得られなかった場合は、 この関数は null を返します。 type で指定された入力値の配列が得られなかった場合、 かつ FILTER_NULL_ON_FAILURE フラグが指定されていた場合は、 この関数は false を返します。その他の理由で失敗した場合でも false を返します。

フィルタが失敗した場合、配列の値は false になります。 変数が設定されていない場合は、null になります。 フラグ FILTER_NULL_ON_FAILURE が指定されている場合は、変数が設定されていないときに false、 フィルタリングに失敗した場合に null となります。 add_empty パラメータが false の場合、 配列の要素は追加されません。


例1 filter_input_array() の例

<?phperror_reporting(E_ALL | E_STRICT);/* データは、実際には POST リクエストでやってきます$_POST = array(    'product_id' => 'libgd<script>',    'component'  => array('10'),    'version'    => '2.0.33',    'testarray'  => array('2', '23', '10', '12'),    'testscalar' => '2',);*/$args = array(    'product_id'   => FILTER_SANITIZE_ENCODED,    'component'    => array('filter'    => FILTER_VALIDATE_INT,                            'flags'     => FILTER_REQUIRE_ARRAY,                             'options'   => array('min_range' => 1, 'max_range' => 10)                           ),    'version'      => FILTER_SANITIZE_ENCODED,    'doesnotexist' => FILTER_VALIDATE_INT,    'testscalar'   => array(                            'filter' => FILTER_VALIDATE_INT,                            'flags'  => FILTER_REQUIRE_SCALAR,                           ),    'testarray'    => array(                            'filter' => FILTER_VALIDATE_INT,                            'flags'  => FILTER_REQUIRE_ARRAY,                           ));$myinputs = filter_input_array(INPUT_POST, $args);var_dump($myinputs);echo "\n";?>

上の例の出力は以下となります。


array(6) {
  ["product_id"]=>
  string(17) "libgd%3Cscript%3E"
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["version"]=>
  string(6) "2.0.33"
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  int(2)
  ["testarray"]=>
  array(4) {
    [0]=>
    int(2)
    [1]=>
    int(23)
    [2]=>
    int(10)
    [3]=>
    int(12)
  }
}

注意

注意:

INPUT_SERVER 配列には、 キー REQUEST_TIME が存在しません。 あとで $_SERVER に追加されるからです。

参考

  • filter_input() - 指定した名前の変数を外部から受け取り、オプションでそれをフィルタリングする
  • filter_var_array() - 複数の変数を受け取り、オプションでそれらをフィルタリングする
  • フィルタの型