(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_var_array — Принимает несколько переменных и, при необходимости, фильтрует их
$array
, array|int $options
= FILTER_DEFAULT
, bool $add_empty
= true
): array|false|null
Фильтр значений ассоциативного массива (array) с использованием
фильтров проверки (FILTER_VALIDATE_*
),
очистки (FILTER_SANITIZE_*
)
или пользовательских фильтров.
array
options
FILTER_VALIDATE_*
,
либо фильтром очистки с использованием одной из констант
FILTER_SANITIZE_*
.
Массив опций – это ассоциативный массив, в котором ключ соответствует ключу
в массиве данных параметра array
,
а связанное с ним значение – это либо фильтр, который нужно применить к этой записи,
либо ассоциативный массив, описывающий, как и какой фильтр должен быть применён к этой записи.
Ассоциативный массив, описывающий применение фильтра, должен содержать ключ 'filter'
,
ассоциированным значением которого является применяемый фильтр,
который может быть одной из констант FILTER_VALIDATE_*
,
FILTER_SANITIZE_*
,
FILTER_UNSAFE_RAW
или FILTER_CALLBACK
.
Дополнительно может содержать ключ 'flags'
, задающий флаги,
которые применяются к фильтру и ключ 'options'
,
задающий любые опции, которые применяются к фильтру.
add_empty
Добавить отсутствующие ключи в виде null
в возвращаемое значение.
Массив, содержащий значения запрошенных переменных в случае успешного выполнения, или false
в случае возникновения ошибки. Значение массива будет false
, если фильтрация завершилась неудачей, или null
,
если переменная не определена.
Пример #1 Пример использования filter_var_array()
<?php
$data = [
'product_id' => 'libgd<script>',
'component' => '10',
'versions' => '2.0.33',
'testscalar' => ['2', '23', '10', '12'],
'testarray' => '2',
];
$filters = [
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
'options' => [
'min_range' => 1,
'max_range' => 10,
],
],
'versions' => [
'filter' => FILTER_SANITIZE_ENCODED
],
'testscalar' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
],
'testarray' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
],
'doesnotexist' => FILTER_VALIDATE_INT,
];
var_dump(filter_var_array($data, $filters));
?>
Результат выполнения приведённого примера:
array(6) { ["product_id"]=> string(17) "libgd%3Cscript%3E" ["component"]=> array(1) { [0]=> int(10) } ["versions"]=> string(6) "2.0.33" ["testscalar"]=> bool(false) ["testarray"]=> array(1) { [0]=> int(2) } ["doesnotexist"]=> NULL }
FILTER_VALIDATE_*
FILTER_SANITIZE_*