PHP 过滤器函数

PHP filter_var_array() 函数获取多个变量并可选择过滤它们。此函数对于检索许多值非常有用,无需重复调用 filter_var()

语法

filter_var_array(array, options, add_empty) 

参数

array必填。 指定一个包含字符串键的数组,其中包含要过滤的数据。
options可选。 指定过滤器参数数组。有效的数组键是变量名称,有效值是过滤器名称或 ID,或者指定过滤器、标志和选项的数组。该参数也可以是单个过滤器名称/ID;然后输入数组中的所有值都由指定的过滤器过滤。请参阅过滤器列表
add_empty可选。 如果设置为 true,则将缺失的键作为 null 添加到返回值中。默认值为 true。

返回值

成功时返回包含所请求变量值的数组,失败时返回 false。如果过滤器失败,则数组值为 false;如果未设置变量,则数组值为 null。

示例:过滤变量

在下面的示例中,filter_var_array()函数用于过滤三个变量。这三个变量是"name"、"age"和"email"。

<?php
$data = array(
  'name'  => 'John Smith',
  'age'   =>  25,
  'email' => 'John@example.com',
);

$filters = array (
  "name"  => array ("filter"=>FILTER_CALLBACK,
                    "flags"=>FILTER_FORCE_ARRAY,
                    "options"=>"ucwords"
                   ),
  "age"   => array ("filter"=>FILTER_VALIDATE_INT,
                    "options"=>array("min_range"=>1,
                                     "max_range"=>100)
                   ),
  "email" => FILTER_VALIDATE_EMAIL
);

print_r(filter_var_array($data, $filters));
?> 

上述代码的输出将是:

Array
(
    [name] => John Smith
    [age] => 25
    [email] => John@example.com
) 

示例:filter_var_array()示例

再考虑一个示例,其中该函数用于验证和清理数组中包含的数据。

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

$args = array(
  'product_id'  => FILTER_SANITIZE_ENCODED,
  'component'    => array('filter'  => FILTER_VALIDATE_INT,
                          'flags'   => FILTER_REQUIRE_ARRAY, 
                          'options' => array('min_range' => 1, 
                                            'max_range' => 10)
                         ),
  'version'      => 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_REQUIRE_ARRAY,
                         )
);

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

var_dump($myinputs);
?> 

上述代码的输出将是:

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