(PHP 5 >= 5.2.0, PHP 7, PHP 8)
filter_var — 使用特定的过滤器过滤一个变量
使用 FILTER_VALIDATE_*
验证过滤器、FILTER_SANITIZE_*
清理过滤器或自定义过滤器过滤变量。
value
标量值在过滤前,会先转换成字符串。
filter
FILTER_VALIDATE_*
常量作为验证过滤器,使用
FILTER_SANITIZE_*
或 FILTER_UNSAFE_RAW
作为清理过滤器,也可以使用 FILTER_CALLBACK
作为自定义过滤器。
注意: 默认值为
FILTER_DEFAULT
,是FILTER_UNSAFE_RAW
的别名。这将导致默认情况下不进行过滤。
options
FILTER_FLAG_*
的位掩码。
如果 filter
接受选项(option),则可以使用数组的 "flags"
字段提供 flag。
成功时返回过滤后的数据。失败时返回 false
,除非使用 FILTER_NULL_ON_FAILURE
flag,在这种情况下会返回 null
。
示例 #1 filter_var() 示例
<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('https://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>
以上示例会输出:
string(15) "bob@example.com" bool(false)
示例 #2 过滤数组示例
<?php
$emails = [
"bob@example.com",
"test@example.local",
"invalidemail"
];
var_dump(filter_var($emails, FILTER_VALIDATE_EMAIL, FILTER_REQUIRE_ARRAY));
?>
以上示例会输出:
array(3) { [0]=> string(15) "bob@example.com" [1]=> string(18) "test@example.local" [2]=> bool(false) }
示例 #3 向 options
传递数组的示例
<?php
$options = [
'options' => [
'min_range' => 10,
],
'flags' => FILTER_FLAG_ALLOW_OCTAL,
];
var_dump(filter_var('0755', FILTER_VALIDATE_INT, $options));
var_dump(filter_var('011', FILTER_VALIDATE_INT, $options));
?>
以上示例会输出:
int(493) bool(false)
示例 #4 直接提供或者通过 array 提供 flag
<?php
$str = 'string';
var_dump(filter_var($str, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
var_dump(filter_var($str, FILTER_VALIDATE_BOOLEAN, ['flags' => FILTER_NULL_ON_FAILURE]));
?>
以上示例会输出:
NULL NULL
FILTER_VALIDATE_*
FILTER_SANITIZE_*