(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_input_array — Récupère plusieurs valeurs externes et les filtre
$type, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|nullCette fonction est utile pour récupérer plusieurs valeurs sans avoir à appeler plusieurs fois la fonction filter_input().
type
Une des constantes INPUT_*.
Le contenu de la superglobale qui est filtrée est le contenu original "brut" fourni par le SAPI, avant toute modification utilisateur de la superglobale. Pour filtrer une superglobale modifiée utiliser filter_var_array() à la place.
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é.
Si le tableau d'entrée désigné par type n'est pas
alimenté, null est retourné à la place.
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.
Contrairement à filter_input(),
le drapeau FILTER_NULL_ON_FAILURE ne change rien à cela :
une entrée manquante est toujours null.
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_input_array()
Cet exemple suppose une requête GET vers
?email=user@example.com&age=twenty&url=https://example.com.
L'entrée age échoue car twenty n'est
pas un entier ; une valeur en dehors de la plage
1 à 120 échouerait de la même façon.
<?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);
?>Résultat de l'exemple ci-dessus est similaire à :
array(3) {
["email"]=>
string(16) "user@example.com"
["age"]=>
bool(false)
["url"]=>
string(19) "https://example.com"
}
Exemple #2 Filtrage de données POST avec filter_input_array()
Cet exemple suppose une requête POST avec les champs
username=<script>alert</script> et
comment=Hello World.
Aucun champ missing n'est soumis : comme
add_empty vaut true par défaut, il est tout de même
présent dans le résultat, défini à null.
<?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);
?>Résultat de l'exemple ci-dessus est similaire à :
array(3) {
["username"]=>
string(38) "<script>alert</script>"
["comment"]=>
string(11) "Hello World"
["missing"]=>
NULL
}
Exemple #3 Demande d'un type d'entrée non alimenté
Cet exemple suppose une requête GET.
Comme la requête ne portait aucun champ POST,
le tableau d'entrée désigné par INPUT_POST n'est pas
alimenté et null est retourné au lieu d'un tableau.
Cela s'applique à tous les types d'entrée :
une requête sans chaîne de requête donne également null pour
INPUT_GET.
<?php
var_dump(filter_input_array(INPUT_POST, ['a' => FILTER_VALIDATE_INT]));
?>Résultat de l'exemple ci-dessus est similaire à :
NULL
Note:
Il n'y a pas de clé
REQUEST_TIMEdans le tableauINPUT_SERVERcar elle est insérée dans la variable $_SERVER plus tard.
FILTER_VALIDATE_*
FILTER_SANITIZE_*