filter_var
(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-
要么是选项的关联 array,要么是过滤器 flag 常量
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_var_array() - 获取多个变量并且过滤它们
- filter_input() - 通过名称获取特定的外部变量,并且可以通过过滤器处理它
- filter_input_array() - 获取一系列外部变量,并且可以通过过滤器处理它们
-
验证过滤器
FILTER_VALIDATE_* -
清理过滤器
FILTER_SANITIZE_*