filter_var_array
filter_var_array($array, $options, $add_empty)
Valide les valeurs d’un tableau selon une définition de filtres et renvoie un tableau de résultats : la valeur validée, false en cas d’échec, null pour une valeur manquante. Elle ignore les clés qui ne sont pas dans la définition.
Paramètres
- $array – un tableau de valeurs (par exemple de json_decode).
- $options – un tableau dont la clé est le nom de la valeur et la valeur un filtre ou un tableau avec les clés filter, flags et options. Un filtre seul s’applique à toutes les valeurs.
- $add_empty – facultatif, la valeur par défaut true ajoute les clés manquantes avec la valeur null.
Exemples
$data = json_decode('{"email":"jean@example.com","age":"34","web":"pas une adresse","role":"admin"}', true);
$definition = array(
"email" => FILTER_VALIDATE_EMAIL,
"age" => array("filter" => FILTER_VALIDATE_INT, "options" => array("min_range" => 0, "max_range" => 120)),
"web" => FILTER_VALIDATE_URL,
"telephone" => FILTER_DEFAULT,
);
$v = filter_var_array($data, $definition);
var_dump($v["age"]); // int(34)
var_dump($v["web"]); // bool(false)
// une clé absente des données vaut null
var_dump($v["telephone"]); // NULL
// une clé hors de la définition (role) n'arrive pas dans le résultat
var_dump(isset($v["role"])); // bool(false)
// sans ajouter les clés manquantes
echo implode(", ", array_keys(filter_var_array($data, $definition, false))); // email, age, web
// un seul filtre pour toutes les valeurs
echo implode(" ", filter_var_array(array("3", "x", "12"), FILTER_VALIDATE_INT)); // 3 12
Points d’attention
- Distinguez false (la valeur n’a pas passé la validation) de null (elle manque). Pour les données obligatoires, vérifiez les deux.
- La définition sert aussi de liste des clés autorisées. Les données en trop (par exemple une clé « role » glissée en douce) n’arrivent pas dans le résultat.
- Une valeur qui est un tableau ne passe qu’avec le drapeau FILTER_REQUIRE_ARRAY ou FILTER_FORCE_ARRAY.
- Pour les données d’un formulaire tirées directement de la requête, il y a filter_input_array(), filter_var_array() valide un tableau que vous avez déjà dans une variable.
Fonctions associées :
filter_input_array()
filter_var()
json_decode()