注意: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_”,但它们是标志!