PHP 8.4.2 Released!

filter_var_array

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

filter_var_arrayRécupère plusieurs variables et les filtre

Description

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

Filtrer un tableau associatif de valeur en utilisant un filtre de validation FILTER_VALIDATE_*, un filtre de purification FILTER_SANITIZE_*, ou un filtre personalisé.

Liste de paramètres

array
Un tableau associatif contenant les données à filtrer.
options
Soit un array associatif d'option, soit un filtre à appliquer à chaque entrée, qui peut être un filtre de validation en utilisant une des constantes FILTER_VALIDATE_*, 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 les données array 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 comme 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 les drapeaux à appliquer 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

Un tableau contenant les valeurs des variables demandées en cas de succès, ou false si une erreur survient. Un tableau de valeurs peut valoir false si le filtre échoue, ou null si la variable n'est pas définie.

Exemples

Exemple #1 Exemple avec filter_var_array()

<?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
}

Voir aussi

add a note

User Contributed Notes 3 notes

up
4
Anonymous
1 year ago
To apply the same filter to many params/keys, use array_fill_keys().

<?php
$data
= array(
'product_id' => 'libgd<script>',
'component' => ' 10 ',
'versions' => '2.0.33',
'testscalar' => array('2', '23', '10', '12'),
'testarray' => '2',
);
$keys = array(
'product_id',
'component',
'versions',
'doesnotexist',
'testscalar',
'testarray'
);
$options = array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return
trim(strip_tags($value));
},
);
$args = array_fill_keys($keys, $options);
/* Result
$args = array(
'product_id' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
'component' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
'versions' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
'doesnotexist' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
'testscalar' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
'testarray' => array(
'filter' => FILTER_CALLBACK,
'options' => function ($value) {
return trim(strip_tags($value));
},
),
);
*/

$myinputs = filter_var_array($data, $args);
var_dump($myinputs);

Output:

array(
6) {
'product_id' =>
string(5) "libgd"
'component'
=>
string(2) "10"
'versions'
=>
string(6) "2.0.33"
'doesnotexist'
=>
NULL
'testscalar' =>
array(
4) {
[
0] =>
string(1) "2"
[1] =>
string(2) "23"
[2] =>
string(2) "10"
[3] =>
string(2) "12"
}
'testarray' =>
string(1) "2"
}
up
8
eguvenc at gmail dot com
15 years ago
<?php
//an example of simply sanitize an array..

$data = array(
'<b>bold</b>',
'<script>javascript</script>',
'P*}i@893746%%%p*.i.*}}|.dw<?php echo "echo works!!";?>');

$myinputs = filter_var_array($data,FILTER_SANITIZE_STRING);

var_dump($myinputs);

//OUTPUT:
//formarray(3) { [0]=> string(4) "bold" [1]=> string(10) "javascript" [2]=> string(26) "P*}i@893746%%%p*.i.*}}|.dw" }
?>
up
-1
Vee W.
5 years ago
$emails = [
'a' => 'email1@domain.com',
'b' => '<email2>@domain.com',
];

$result = filter_var_array($emails, FILTER_SANITIZE_EMAIL);
print_r($result);

// the result will be...
// array('a' => 'email1@domain.com', 'b' => 'email2@domain.com')
To Top