filter_var_array
PHP Manual
PHP Manual»Fonctions Filter»filter_var_array

filter_var_array

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

filter_var_array — Récupère plusieurs variables et les filtre

Description

function filter_var_array(array $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é.

Liste de paramètres

array

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

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

Exemples

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) "&#60;b&#62;John&#60;/b&#62;"
  ["email"]=>
  string(32) "john@example&#60;script&#62;.com"
  ["bio"]=>
  string(22) "Developer &#38; 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"
}

Voir aussi

To Top