filter_var_array()

1. 定义

该函数以数组形式过滤多个变量,成功时返回包含所请求变量的数组,过滤失败则返回FALSE,变量不存在则返回NULL。

2. 语法

filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] ) : mixed

3. 参数说明

参数 可选性 数据类型 描述
$data 必需 数组 要过滤的变量数组。键名为键值的标识,键值为待过滤的数据
$definition 可选 mixed 定义参数的数组,每个键值对的键名为待过滤数据的标识,键值要么是一个过滤类型,要么是一个包含了过滤器、标识和选项的数组。也可以是一个filter_constant整数
$add_empty 可选 布尔值 是否在返回值中添加NULL作为不存在的键,默认为TRUE

4. 示例

<?php

// filter_var_array()
// 以数组形式过滤多个变量,成功时返回包含所请求变量的数组,过滤失败则返回FALSE,变量不存在则返回NULL

$data = [
    'label'=>'<p>这是一段被标签包裹的文本段落</p>',
    'email'=>'data@jisuapi.com',
    'code'=>'$email = "hushuo.badao@djis_dhs.cc"'
];
$res = filter_var_array($data, FILTER_SANITIZE_FULL_SPECIAL_CHARS);// $data 数组中的每项都经过 FILTER_SANITIZE_FULL_SPECIAL_CHARS 过滤器处理
var_dump($res);
/* 输出:
array(3) {
  ["label"]=>
  string(61) "&lt;p&gt;这是一段被标签包裹的文本段落&lt;/p&gt;"
  ["email"]=>
  string(16) "data@jisuapi.com"
  ["code"]=>
  string(45) "$email = &quot;hushuo.badao@djis_dhs.cc&quot;"
}
 */

$filter = [
    'label'=>[
        'filter'=>FILTER_SANITIZE_STRING,
        'flags'=>FILTER_FLAG_NO_ENCODE_QUOTES
    ],
    'email'=>[
        'filter'=>FILTER_SANITIZE_EMAIL
    ],
    'code'=>[
        'filter'=>FILTER_SANITIZE_STRIPPED
    ]
];
$res = filter_var_array($data, $filter);// $data 数组中的每项对应 $filter 数组中的过滤方式
var_dump($res);
/* 输出:
array(3) {
  ["label"]=>
  string(42) "这是一段被标签包裹的文本段落"
  ["email"]=>
  string(16) "data@jisuapi.com"
  ["code"]=>
  string(43) "$email = &#34;hushuo.badao@djis_dhs.cc&#34;"
}
 */

5. 延展阅读

  • filter_input_array():通过检查指定类型中存在的一系列变量,并使用特定过滤器处理该系列变量
  • filter_var():使用特定的过滤器过滤一个变量。返回过滤后的值,如果过滤失败则返回FALSE
  • filter_input():通过检查指定类型中是否存在指定变量,并使用特定过滤器处理该变量