注意:FILTER_NULL_ON_FAILURE、FILTER_REQUIRE_SCALAR、FILTER_REQUIRE_ARRAY 和 FILTER_FORCE_ARRAY 没有前缀“FILTER_FLAG_”,但它们是标志!
以下常量由此扩展定义,只有在将扩展编译到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
。 非布尔值的返回值取决于 FILTER_NULL_ON_FAILURE
。如果设置了它,则返回 null
,否则返回 false
。 默认值
FILTER_VALIDATE_BOOLEAN
(int)FILTER_VALIDATE_BOOL
的别名。此别名在PHP 8.0.0引入其规范名称之前可用。
FILTER_VALIDATE_INT
(int)注意: 在验证之前,使用 trim() 修剪字符串值。
默认值
最小范围
最大范围
FILTER_FLAG_ALLOW_OCTAL
(int)0[0-7]+
)。
FILTER_FLAG_ALLOW_HEX
(int)0x[0-9a-fA-F]+
)。
FILTER_VALIDATE_FLOAT
(int)注意: 在验证之前,使用 trim() 修剪字符串值。
默认值
十进制
最小范围
最大范围
FILTER_FLAG_ALLOW_THOUSAND
(int),
),通常表示千位分隔符。
FILTER_VALIDATE_REGEXP
(int)regexp
选项提供的正则表达式验证值。
默认值
正则表达式
FILTER_VALIDATE_URL
(int)默认值
FILTER_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)默认值
FILTER_FLAG_HOSTNAME
(int)FILTER_VALIDATE_EMAIL
(int)addr-spec
语法执行验证。但是,不支持注释、空格折叠和无点域名,因此将被拒绝。默认值
FILTER_FLAG_EMAIL_UNICODE
(int)电子邮件验证很复杂,确认电子邮件有效且存在的唯一真正方法是向该地址发送电子邮件。
FILTER_VALIDATE_IP
(int)将值验证为 IP 地址。
默认值
FILTER_FLAG_IPV4
(int)FILTER_FLAG_IPV6
(int)FILTER_FLAG_NO_RES_RANGE
(int)Reserved-By-Protocol
的范围。对于 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
开头的 IPv6 地址。
FILTER_FLAG_GLOBAL_RANGE
(int)Global
属性为 True
。PHP 8.2.0 版起可用。
FILTER_VALIDATE_MAC
(int)默认值
FILTER_UNSAFE_RAW
(int)FILTER_FLAG_STRIP_*
和 FILTER_FLAG_ENCODE_*
过滤器清理标志一起使用,它可以去除或编码特殊字符。FILTER_DEFAULT
(int)FILTER_UNSAFE_RAW
的别名。
FILTER_SANITIZE_STRING
(int)FILTER_FLAG_STRIP_*
和 FILTER_FLAG_ENCODE_*
过滤器清理标志一起使用,则可以选择去除或编码指定的字符。 可以使用 FILTER_FLAG_NO_ENCODE_QUOTES
过滤器标志禁用编码引号的行为。自 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_*
过滤器清理标志一起使用,则可以选择去除或编码指定的字符。FILTER_SANITIZE_SPECIAL_CHARS
(int)此过滤器 HTML 编码 '
、"
、<
、>
、&
和 ASCII 值小于 32 的字符。
FILTER_FLAG_STRIP_*
过滤器清理标志一起使用,则可以选择去除指定的字符,并且可以使用 FILTER_FLAG_ENCODE_HIGH
编码 ASCII 值大于 127 的字符。
FILTER_SANITIZE_FULL_SPECIAL_CHARS
(int)ENT_QUOTES
调用 htmlspecialchars()。 可以使用 FILTER_FLAG_NO_ENCODE_QUOTES
过滤器标志禁用编码引号的行为。与 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
标志,则小数点分隔符将被移除,从而改变接收到的值。
<?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
参数作为与'options'
键关联的值传递。
回调函数应具有以下签名
值
注意: 回调函数返回的值将是调用的过滤器函数返回的值。
示例 #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
此过滤器不能与任何其他过滤器标志一起使用,例如FILTER_NULL_ON_FAILURE
。
注意:FILTER_NULL_ON_FAILURE、FILTER_REQUIRE_SCALAR、FILTER_REQUIRE_ARRAY 和 FILTER_FORCE_ARRAY 没有前缀“FILTER_FLAG_”,但它们是标志!