(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_var_array — Récupère plusieurs variables et les filtre
$array, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null
Filtrer un tableau associatif de valeurs en utilisant un filtre de validation
FILTER_VALIDATE_*,
un filtre de purification
FILTER_SANITIZE_*,
ou un filtre personnalisé.
arrayUn tableau associatif contenant les données à filtrer.
options
Soit un array associatif d'options,
soit un filtre à appliquer à chaque entrée,
qui peut être un filtre de validation en utilisant une des constantes
FILTER_VALIDATE_*,
ou un filtre de purification en utilisant une des constantes
FILTER_SANITIZE_*.
Le tableau d'options est un tableau associatif où les clés correspondent à une clé dans le tableau d'entrée et la valeur associée est soit le filtre à appliquer à cette entrée, soit un tableau associatif qui décrit comment et quel filtre devrait être appliqué à cette entrée.
Le tableau associatif qui décrit comment un filtre devrait être appliqué
doit contenir la clé 'filter' dont sa valeur associée
est le filtre à appliquer, qui peut être une des constantes
FILTER_VALIDATE_*,
FILTER_SANITIZE_*,
FILTER_UNSAFE_RAW, ou
FILTER_CALLBACK.
Il peut contenir facultativement la clé 'flags'
qui spécifie tout drapeau qui s'applique au filtre,
et la clé 'options' qui spécifie toute option
qui s'applique au filtre.
add_empty
Ajoute les clés manquantes en tant que null dans la valeur de retour.
En cas de succès, un tableau contenant les valeurs des variables demandées.
En cas d'échec, false est retourné.
Les entrées manquantes du tableau d'entrée sont ajoutées au tableau retourné
avec la valeur null si add_empty vaut true,
et sont entièrement omises s'il vaut false.
Une entrée dans le tableau retourné sera false si le filtre échoue,
sauf si le drapeau FILTER_NULL_ON_FAILURE est utilisé,
auquel cas il sera null.
Avec le drapeau FILTER_FORCE_ARRAY,
cette valeur d'échec est enveloppée dans un tableau d'un seul élément,
comme n'importe quel autre résultat.
Exemple #1 Exemple avec filter_var_array()
Les entrées sont filtrées comme des scalaires à moins que
FILTER_REQUIRE_ARRAY ou
FILTER_FORCE_ARRAY ne soit utilisé.
Le drapeau FILTER_REQUIRE_SCALAR sur
testscalar ci-dessous ne fait donc qu'expliciter ce
comportement par défaut.
<?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));
?>L'exemple ci-dessus va afficher :
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
}
Exemple #2 Application d'un filtre unique à toutes les valeurs
Lorsque options est un entier, le même filtre est
appliqué à chaque entrée du tableau.
<?php
$data = [
'name' => '<b>John</b>',
'email' => 'john@example<script>.com',
'bio' => 'Developer & writer',
];
var_dump(filter_var_array($data, FILTER_SANITIZE_SPECIAL_CHARS));
?>L'exemple ci-dessus va afficher :
array(3) {
["name"]=>
string(27) "<b>John</b>"
["email"]=>
string(32) "john@example<script>.com"
["bio"]=>
string(22) "Developer & writer"
}
Exemple #3 Utilisation 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));
?>L'exemple ci-dessus va afficher :
array(2) {
["name"]=>
string(8) "John Doe"
["city"]=>
string(8) "NEW YORK"
}
FILTER_VALIDATE_*
FILTER_SANITIZE_*