filter_var_array
(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_var_array — 获取多个变量并且过滤它们
说明
filter_var_array(array
$array
, array|int $options
= FILTER_DEFAULT
, bool $add_empty
= true
): array|false|null
使用 FILTER_VALIDATE_*
验证过滤器、FILTER_SANITIZE_*
清理过滤器或自定义过滤器来过滤关联 array 的值。
参数
array
- 关联 array,包含要过滤的数据。
options
-
要么是选项的关联 array,要么是应用于每个条目的过滤器,可以是使用
FILTER_VALIDATE_*
常量的验证过滤器,也可以是使用FILTER_SANITIZE_*
常量的清理过滤器。 选项数组是关联数组,其中 key 对应于数据array
中的键,而关联的值要么是应用于该条目的过滤器,要么是描述如何以及应用哪个过滤器到该条目的关联数组。 描述如何应用过滤器的关联数组必须包含'filter'
key,其关联的值是要应用的过滤器,FILTER_VALIDATE_*
、FILTER_SANITIZE_*
、FILTER_UNSAFE_RAW
或FILTER_CALLBACK
常量之一。还可以选择性地包含'flags'
key,用于指定适用于过滤器的 flag,以及'options'
key,用于指定适用于过滤器的任何选项。 add_empty
-
为缺失的 key 添加
null
到返回值中。
示例
示例 #1 一个 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));
?>
以上示例会输出:
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 }
参见
- filter_input_array() - 获取一系列外部变量,并且可以通过过滤器处理它们
- filter_var() - 使用特定的过滤器过滤一个变量
- filter_input() - 通过名称获取特定的外部变量,并且可以通过过滤器处理它
-
验证过滤器
FILTER_VALIDATE_*
-
清理过滤器
FILTER_SANITIZE_*
+添加备注
用户贡献的备注 3 notes
Anonymous ¶
2 years 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"
}
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" }
?>
备份地址:http://www.lvesu.com/blog/php/function.filter-var-array.php