php8.5
Home/ Manual/ filter / functions/ filter_input_array

filter_input_array

PHP function Edit on GitHub ✎

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

Gets external variables and optionally filters them

Description

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

This function is useful for retrieving many values without repetitively calling filter_input().

Parameters

type

One of the INPUT_* constants.

Warning

The content of the superglobal that is being filtered is the original "raw" content provided by the SAPI, prior to any user modification to the superglobal. To filter a modified superglobal use filter_var_array() instead.

Return Values

On success, an Array containing the values of the requested variables.

On failure, false is returned. If the input array designated by type is not populated, null is returned instead.

Missing entries from the input array are added to the returned Array as null if add_empty is true, and are omitted entirely if it is false. Unlike filter_input(), the FILTER_NULL_ON_FAILURE flag does not change this: a missing entry is always null.

An entry of the returned Array will be false if the filter fails, unless the FILTER_NULL_ON_FAILURE flag is used, in which case it will be null. With the FILTER_FORCE_ARRAY flag, that failure value is wrapped in a one element Array like any other result.

Examples

A filter_input_array() example

This example assumes a GET request to ?email=user@example.com&age=twenty&url=https://example.com. The age entry fails because twenty is not an integer; a value outside the 1 to 120 range would fail the same way.

php
<?php
$filters = [
    'email' => FILTER_VALIDATE_EMAIL,
    'age'   => [
        'filter'  => FILTER_VALIDATE_INT,
        'options' => ['min_range' => 1, 'max_range' => 120],
    ],
    'url'   => FILTER_VALIDATE_URL,
];

$result = filter_input_array(INPUT_GET, $filters);

var_dump($result);
?>

The above example will output something similar to:

output
array(3) {
  ["email"]=>
  string(16) "user@example.com"
  ["age"]=>
  bool(false)
  ["url"]=>
  string(19) "https://example.com"
}

Filtering POST data with filter_input_array()

This example assumes a POST request with fields username=<script>alert</script> and comment=Hello World. No missing field is submitted: because add_empty defaults to true, it is still present in the result, set to null.

php
<?php
$filters = [
    'username' => FILTER_SANITIZE_SPECIAL_CHARS,
    'comment'  => FILTER_SANITIZE_SPECIAL_CHARS,
    'missing'  => FILTER_VALIDATE_INT,
];

$result = filter_input_array(INPUT_POST, $filters);

var_dump($result);
?>

The above example will output something similar to:

output
array(3) {
  ["username"]=>
  string(38) "&#60;script&#62;alert&#60;/script&#62;"
  ["comment"]=>
  string(11) "Hello World"
  ["missing"]=>
  NULL
}

Requesting an input type that is not populated

This example assumes a GET request. Because the request carried no POST fields, the input array designated by INPUT_POST is not populated and null is returned instead of an Array. This applies to every input type: a request with no query string yields null for INPUT_GET as well.

php
<?php
var_dump(filter_input_array(INPUT_POST, ['a' => FILTER_VALIDATE_INT]));
?>

The above example will output something similar to:

output
NULL

Notes

Note

There is no REQUEST_TIME key in INPUT_SERVER array because it is inserted into the $_SERVER later.

See Also

Source: reference/filter/functions/filter-input-array.xml · from the official PHP manual (php/doc-en)