Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!PHP - Manual: 预定义常量
2025-10-24
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
这些常量用于 filter_input() 和 filter_input_array()。
INPUT_POST
(int)
INPUT_GET
(int)
INPUT_ENV
(int)
INPUT_SERVER
(int)
INPUT_SESSION
(int)
INPUT_REQUEST
(int)
FILTER_FLAG_NONE
(int)
FILTER_REQUIRE_SCALAR
(int)
FILTER_REQUIRE_ARRAY
(int)
FILTER_FORCE_ARRAY
(int)
FILTER_NULL_ON_FAILURE
(int)
null 而不是 false。
可与任何验证 FILTER_VALIDATE_*
过滤器一起使用。
FILTER_FLAG_STRIP_LOW
(int)
FILTER_FLAG_STRIP_HIGH
(int)
FILTER_FLAG_STRIP_BACKTICK
(int)
`)字符。
FILTER_FLAG_ENCODE_LOW
(int)
FILTER_FLAG_ENCODE_HIGH
(int)
FILTER_FLAG_ENCODE_AMP
(int)
&。
FILTER_FLAG_NO_ENCODE_QUOTES
(int)
' 和 ")将不会编码。
FILTER_FLAG_EMPTY_STRING_NULL
(int)
null
FILTER_VALIDATE_BOOL
(int)
"1"、"true"、"on"
和 "yes" 返回 true。
对于 "0"、"false"、"off"、"no"
和 "" 返回 false。
非 bool 值的返回值取决于 FILTER_NULL_ON_FAILURE。如果设置,则返回 null,否则返回 false。
defaultFILTER_VALIDATE_BOOLEAN
(int)
FILTER_VALIDATE_BOOL。该别名在 PHP 8.0.0 中引入其规范名称之前可用。
FILTER_VALIDATE_INT
(int)
注意: 字符串值在验证之前使用 trim()。
defaultmin_rangemax_rangeFILTER_FLAG_ALLOW_OCTAL
(int)
0[0-7]+)。
FILTER_FLAG_ALLOW_HEX
(int)
0x[0-9a-fA-F]+)。
FILTER_VALIDATE_FLOAT
(int)
注意: 字符串值在验证之前使用 trim()。
defaultdecimalmin_rangemax_rangeFILTER_FLAG_ALLOW_THOUSAND
(int)
,),通常代表千位分隔符。
FILTER_VALIDATE_REGEXP
(int)
regexp 选项提供的正则表达式验证值。
defaultregexpFILTER_VALIDATE_URL
(int)
defaultFILTER_FLAG_SCHEME_REQUIRED
(int)
自 PHP 7.3.0 起弃用,自 PHP 8.0.0 起移除。这是因为
FILTER_VALIDATE_URL 过滤器始终隐含。
FILTER_FLAG_HOST_REQUIRED
(int)
自 PHP 7.3.0 起弃用,自 PHP 8.0.0 起移除。这是因为
FILTER_VALIDATE_URL 过滤器始终隐含。
FILTER_FLAG_PATH_REQUIRED
(int)
FILTER_FLAG_QUERY_REQUIRED
(int)
有效的 URL 可能未指定 HTTP
协议(http://)。因此,可能需要进一步验证以确定 URL
是否使用期望的协议,例如 ssh:// 或 mailto:。
此过滤器仅适用于 ASCII URL。这意味着将始终拒绝国际化域名(IDN)。
FILTER_VALIDATE_DOMAIN
(int)
defaultFILTER_FLAG_HOSTNAME
(int)
FILTER_VALIDATE_EMAIL
(int)
addr-spec
语法进行的。拒绝注释、空格折叠和无点域名。
defaultFILTER_FLAG_EMAIL_UNICODE
(int)
电子邮件验证很复杂,确认电子邮件有效且存在的唯一真正方法是向该地址发送电子邮件。
FILTER_VALIDATE_IP
(int)
验证值为 IP 地址。
defaultFILTER_FLAG_IPV4
(int)
FILTER_FLAG_IPV6
(int)
FILTER_FLAG_NO_RES_RANGE
(int)
由协议保留的范围。
IPv4 的对应以下范围:
0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8, 240.0.0.0/4.
IPv6 的对应以下范围:
::1/128, ::/128, ::FFFF:0:0/96, FE80::/10.
FILTER_FLAG_NO_PRIV_RANGE
(int)
IPv4 的对应以下范围:
10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16.
FD 或 FC 开头。
FILTER_FLAG_GLOBAL_RANGE
(int)
Global 属性是 True。自
PHP 8.2.0 起可用。
FILTER_VALIDATE_MAC
(int)
defaultFILTER_UNSAFE_RAW
(int)
FILTER_FLAG_STRIP_* 和
FILTER_FLAG_ENCODE_* 过滤器清理 flag
一起使用,可以去除或编码特殊字符。
FILTER_DEFAULT
(int)
FILTER_UNSAFE_RAW。
FILTER_SANITIZE_STRING
(int)
FILTER_FLAG_STRIP_* 和
FILTER_FLAG_ENCODE_*
过滤器清理 flag 一起使用,可以选择性地去除或编码指定字符。
可以使用 FILTER_FLAG_NO_ENCODE_QUOTES 过滤器 flag 禁用编码引号的行为。
自 PHP 8.1.0 起弃用,使用 htmlspecialchars() 代替。
此过滤器去除标签的方式不等同于 strip_tags()。
FILTER_SANITIZE_STRIPPED
(int)
FILTER_SANITIZE_STRING。
自 PHP 8.1.0 起弃用,使用 htmlspecialchars() 代替。
FILTER_SANITIZE_ENCODED
(int)
FILTER_FLAG_STRIP_* 和
FILTER_FLAG_ENCODE_*
过滤器清理 flag 一起使用,可以选择性地去除或编码指定字符。
FILTER_SANITIZE_SPECIAL_CHARS
(int)
此过滤器对
', ", <, >, &
和 ASCII 值小于 32 的字符进行 HTML 编码。
FILTER_FLAG_STRIP_* 过滤器清理
flag 一起使用,可以选择性地去除指定字符,并且可以使用 FILTER_FLAG_ENCODE_HIGH
对 ASCII 值大于 127 的字符进行编码。
FILTER_SANITIZE_FULL_SPECIAL_CHARS
(int)
ENT_QUOTES。
可以使用 FILTER_FLAG_NO_ENCODE_QUOTES 过滤器 flag 禁用编码引号的行为。
与 htmlspecialchars() 一样,此过滤器可识别 default_charset INI 设置。如果检测到字节序列构成了当前字符集中的无效字符,则会拒绝整个字符串,从而返回空字符串。
FILTER_SANITIZE_EMAIL
(int)
[a-zA-Z])、数字([0-9])和特殊字符
!#$%&'*+-=?^_`{|}~@.[] 之外的所有字符来清理字符串。
FILTER_SANITIZE_URL
(int)
[a-zA-Z])、数字([0-9])和特殊字符
$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&= 之外的所有字符来清理字符串。
FILTER_SANITIZE_NUMBER_INT
(int)
[0-9])、加号(+)和减号(-)之外的所有字符来清理字符串。
FILTER_SANITIZE_NUMBER_FLOAT
(int)
[0-9])、加号(+)和减号(-)之外的所有字符来清理字符串。
FILTER_FLAG_ALLOW_FRACTION
(int)
.)字符,通常表示为整数部分和小数部分之间的分隔符。
FILTER_FLAG_ALLOW_THOUSAND
(int)
,)字符,通常代表千位分隔符。
FILTER_FLAG_ALLOW_SCIENTIFIC
(int)
e 和 E 字符来接受科学计数法中的数字。
如果未使用 FILTER_FLAG_ALLOW_FRACTION flag,则会移除小数分隔符,从而改变接收到的值。
<?php
$number = '12.34';
var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT));
var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
?>以上示例会输出:
string(4) "1234" string(5) "12.34"
FILTER_SANITIZE_ADD_SLASHES
(int)
FILTER_SANITIZE_MAGIC_QUOTES
(int)
FILTER_SANITIZE_ADD_SLASHES。
自 PHP 7.3.0 起弃用,自 PHP 8.0.0 起移除。
FILTER_CALLBACK
(int)
'options'
key 关联的值传递给 options 参数。
callback 应具有以下签名:
value注意: callback 返回的值作为调用过滤函数返回的值。
示例 #1
使用 FILTER_CALLBACK 验证登录名的示例
<?php
function validate_login($value): ?string
{
if (strlen($value) >= 5 && ctype_alnum($value)) {
return $value;
}
return null;
}
$login = "val1dL0gin";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
$login = "f&ke login";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
?>以上示例会输出:
string(10) "val1dL0gin" NULL
此过滤器不能与其他任何过滤器 flag 一起使用,例如 FILTER_NULL_ON_FAILURE。
Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!