(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_var_array — Obtiene múltiple variables y opcionalmente las filtra
$array, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null
Valida un array asociativo de valores usando los
filtros de validación
FILTER_VALIDATE_*,
filtros de saneación
FILTER_SANITIZE_*,
o filtros definidos por el usuario
arrayUn array asociativo que contiene los datos a filtrar.
options
Ya sea un array asociativo de opciones,
o el filtro que se aplicará a cada entrada,
que puede ser un filtro de validación mediante el uso de una de las constantes
FILTER_VALIDATE_*
o un filtro de saneamiento mediante el uso de una de las constantes
FILTER_SANITIZE_*.
La array de opciones es un array asociativo donde la clave corresponde a una clave del array de entrada y el valor asociado es el filtro a aplicar a esta entrada, o un array asociativo que describe cómo y qué filtro se debe aplicar a esta entrada.
El array asociativo que describe cómo se debe aplicar un filtro
debe contener la clave 'filter' cuyo valor asociado
es el filtro a aplicar, que puede ser uno de las constantes
FILTER_VALIDATE_*,
FILTER_SANITIZE_*,
FILTER_UNSAFE_RAW, o
FILTER_CALLBACK.
Opcionalmente, puede contener la clave 'flags',
que especifica cualquier flag que se aplique al filtro,
y la clave 'options', que especifica las opciones
que se aplican al filtro.
add_empty
Añade claves faltantes como null al valor devuelto.
En caso de éxito, un array que contiene los valores de las variables solicitadas.
En caso de fallo, se devuelve false.
Las entradas faltantes del array de entrada se añaden al array devuelto
como null si add_empty es true,
y se omiten por completo si es false.
Un valor del array devuelto será false si el filtro falla,
a menos que se use el flag FILTER_NULL_ON_FAILURE,
en cuyo caso será null.
Con el flag FILTER_FORCE_ARRAY,
ese valor de fallo se envuelve en un array de un solo elemento
como cualquier otro resultado.
Ejemplo #1 Ejemplo de filter_var_array()
Las entradas se filtran como escalares a menos que se use
FILTER_REQUIRE_ARRAY o
FILTER_FORCE_ARRAY.
Por lo tanto, el flag FILTER_REQUIRE_SCALAR en
testscalar, a continuación, solo indica ese
comportamiento por defecto de forma explícita.
<?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));
?>El ejemplo anterior mostrará:
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
}
Ejemplo #2 Aplicación de un único filtro a todos los valores
Cuando options es un int, se aplica el mismo
filtro a cada entrada del array.
<?php
$data = [
'name' => '<b>John</b>',
'email' => 'john@example<script>.com',
'bio' => 'Developer & writer',
];
var_dump(filter_var_array($data, FILTER_SANITIZE_SPECIAL_CHARS));
?>El ejemplo anterior mostrará:
array(3) {
["name"]=>
string(27) "<b>John</b>"
["email"]=>
string(32) "john@example<script>.com"
["bio"]=>
string(22) "Developer & writer"
}
Ejemplo #3 Uso de FILTER_CALLBACK
<?php
$data = [
'name' => ' John Doe ',
'city' => ' New York ',
];
$options = [
'name' => [
'filter' => FILTER_CALLBACK,
'options' => 'trim',
],
'city' => [
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return strtoupper(trim($value));
},
],
];
var_dump(filter_var_array($data, $options));
?>El ejemplo anterior mostrará:
array(2) {
["name"]=>
string(8) "John Doe"
["city"]=>
string(8) "NEW YORK"
}
FILTER_VALIDATE_*
FILTER_SANITIZE_*