(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_input_array — Получает несколько переменных извне PHP и, при необходимости, фильтрует их
$type
, array|int $options
= FILTER_DEFAULT
, bool $add_empty
= true
): array|false|nullЭта функция полезна для получения множества переменных без многократного вызова функции filter_input().
type
INPUT_*
.
Содержимое фильтруемых суперглобальных переменных – это исходное «сырое» содержимое, предоставленное SAPI, до внесения пользователем каких-либо изменений в суперглобальные переменные. Для фильтрации изменённого суперглобального содержимого используйте функцию filter_var_array().
options
FILTER_VALIDATE_*
,
либо фильтром очистки с использованием одной из констант
FILTER_SANITIZE_*
.
Массив опций – это ассоциативный массив, в котором ключ соответствует ключу
в массиве данных параметра array
,
а связанное с ним значение – это либо фильтр, который нужно применить к этой записи,
либо ассоциативный массив, описывающий, как и какой фильтр должен быть применён к этой записи.
Ассоциативный массив, описывающий применение фильтра, должен содержать ключ 'filter'
,
ассоциированным значением которого является применяемый фильтр,
который может быть одной из констант FILTER_VALIDATE_*
,
FILTER_SANITIZE_*
,
FILTER_UNSAFE_RAW
или FILTER_CALLBACK
.
Дополнительно может содержать ключ 'flags'
, задающий флаги,
которые применяются к фильтру и ключ 'options'
,
задающий любые опции, которые применяются к фильтру.
add_empty
Добавить отсутствующие ключи в виде null
в возвращаемое значение.
В случае успешного выполнения, функция возвращает массив (array), содержащий значения запрошенных переменных.
Функция возвращает значение false
в случае возникновения ошибки.
Если входной массив, определяемый параметром type
, не заполнен,
функция вернёт значение null
, если флаг FILTER_NULL_ON_FAILURE
не задан.
Недостающие записи входного массива будут заполнены в возвращаемый массив (array),
если значение параметра add_empty
равно true
.
В этом случае отсутствующим записям будем присвоено значение null
,
если только не используется флаг FILTER_NULL_ON_FAILURE
,
в этом случае записям будет присвоено значение false
.
Элемент возвращаемого массива (array) будет false
,
если фильтр не сработал, если только не используется флаг FILTER_NULL_ON_FAILURE
,
в этом случае он будет null
.
Пример #1 Пример использования filter_input_array()
<?php
/* данные, полученные методом 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_VALIDATE_*
FILTER_SANITIZE_*