filter_input_array
PHP Manual
PHP Manual»Fonctions Filter»filter_input_array

filter_input_array

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

filter_input_array — Récupère plusieurs valeurs externes et les filtre

Description

function filter_input_array(int $type, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null

Cette fonction est utile pour récupérer plusieurs valeurs sans avoir à appeler plusieurs fois la fonction filter_input().

Liste de paramètres

type

Une des constantes INPUT_*.

Avertissement

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.

Valeurs 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.

Exemples

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) "&#60;script&#62;alert&#60;/script&#62;"
  ["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

Notes

Note:

Il n'y a pas de clé REQUEST_TIME dans le tableau INPUT_SERVER car elle est insérée dans la variable $_SERVER plus tard.

Voir aussi

To Top