filter_var_array

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

filter_var_arrayObtêm múltiplas variáveis e opcionalmente as filtra

Descrição

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

Esta função é útil para receber muitos valores sem repetidamente chamar a função filter_var().

Parâmetros

array

Um array com as chaves string contendo os dados a filtrar.

options

Um array definindo os argumentos. Uma chave válida é uma string contendo o nome da variável, e um valor válido é um tipo de filtro ou um array opcionalmente especificando o filtro, marcas e opções. Se o valor for um array, chaves válida são filter que especifica o tipo de filtro, flags que especifica alguma marca aplicada ao filtro, e options que especifica uma opção que é aplicada ao filtro. Veja o exemplo abaixo para um melhor entendimento.

Este parâmetro pode ser também um inteiro contendo uma constante de filtro. Desta forma, todos valores no array de entrada serão filtrados por este filtro.

add_empty

Adiciona chaves faltantes como null ao valor de retorno.

Valor Retornado

Um array contendo valores das variáveis requisitadas em caso de sucesso, ou false em caso de falha. Um valor de array será false se o filtro falhar, ou null se a variável não estiver definida.

Exemplos

Exemplo #1 Um exemplo de filter_var_array()

<?php

$data
= array(
'product_id' => 'libgd<script>',
'component' => '10',
'versions' => '2.0.33',
'testscalar' => array('2', '23', '10', '12'),
'testarray' => '2',
);

$args = array(
'product_id' => FILTER_SANITIZE_ENCODED,
'component' => array('filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
'options' => array('min_range' => 1, 'max_range' => 10)
),
'versions' => FILTER_SANITIZE_ENCODED,
'doesnotexist' => FILTER_VALIDATE_INT,
'testscalar' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_SCALAR,
),
'testarray' => array(
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_FORCE_ARRAY,
)

);

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

var_dump($myinputs);
echo
"\n";
?>

O exemplo acima produzirá:

array(6) {
  ["product_id"]=>
  string(17) "libgd%3Cscript%3E"
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  string(6) "2.0.33"
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
}

Veja Também

add a note add a note

User Contributed Notes 5 notes

up
9
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')
up
1
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
-1
tongcheong77 at gmail dot com
7 years ago
for those who would like to know how to use regular expressions with filter var array. taken from w3 schools.

$data = array(
 
  'regxp' =>  'michael'
 
  );

$args = array(
 
  'regxp'  =>  array(
 
  'filter'=>FILTER_VALIDATE_REGEXP | FILTER_SANITIZE_STRING,
  'options'=>array('regexp'=>"/^michael$/"),
 
  ));
 
$output=filter_var_array($data,$args);

var_dump($output); // array(1) { ["regxp"]=> string(7) "michael" }

- bruce tong
up
-2
tongcheong77 at gmail dot com
7 years ago
an update to previous post.

using regular expressions along with another filter in filter var array

$data = array(
 
  'regxp' =>  "`\tcafé\n`"
 
  );

$args = array( 
 
  'regxp'  =>  array(
 
  'filter'=>FILTER_VALIDATE_REGEXP | FILTER_SANITIZE_STRING,
  'flags'=>FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_BACKTICK,
  'options'=>array('regexp'=>"/t(.*)/"),
 
  ));
 
$output=filter_var_array($data,$args);

var_dump($output); // array(1) { ["regxp"]=> string(3) "caf" }

-bruce tong
To Top