PHP 过滤 函数
PHP 过滤介绍
PHP 过滤器用于验证和过滤来自不安全来源(如用户输入)的数据。
安装
从 PHP 5.2.0 开始,过滤函数默认启用。使用这些函数不需要安装。
运行时配置
这些函数的行为受 php.ini 中的设置影响
名称 | 描述 | 默认 | 可更改 |
---|---|---|---|
filter.default | 使用此过滤器过滤所有 $_GET、$_POST、$_COOKIE、$_REQUEST 和 $_SERVER 数据。接受您想使用的过滤器的名称作为默认过滤器。有关过滤器名称列表,请参见过滤器列表 | "unsafe_raw" | PHP_INI_PERDIR |
filter.default_flags | 设置默认过滤器时要应用的默认标志。出于向后兼容性原因,默认情况下将其设置为 FILTER_FLAG_NO_ENCODE_QUOTES | NULL | PHP_INI_PERDIR |
PHP 过滤器函数
函数 | 描述 |
---|---|
filter_has_var() | 检查指定输入类型变量是否存在 |
filter_id() | 返回指定过滤器名称的过滤器 ID |
filter_input() | 获取外部变量(例如来自表单输入)并可选地对其进行过滤 |
filter_input_array() | 获取外部变量(例如来自表单输入)并可选地对其进行过滤 |
filter_list() | 返回所有支持的过滤器名称列表 |
filter_var() | 使用指定过滤器过滤变量 |
filter_var_array() | 获取多个变量并对其进行过滤 |
PHP 预定义过滤器常量
常量 | 描述 |
---|---|
INPUT_POST | POST 变量 |
INPUT_GET | GET 变量 |
INPUT_COOKIE | COOKIE 变量 |
INPUT_ENV | ENV 变量 |
INPUT_SERVER | SERVER 变量 |
FILTER_DEFAULT | 不做任何操作,可选地剥离/编码特殊字符。等效于 FILTER_UNSAFE_RAW |
FILTER_FLAG_NONE | 不允许任何标志 |
FILTER_FLAG_ALLOW_OCTAL | 仅适用于以零 (0) 开头的八进制数字的输入。这仅允许后续数字为 0-7 |
FILTER_FLAG_ALLOW_HEX | 仅适用于以 0x/0X 开头的十六进制数字的输入。这仅允许后续字符为 a-fA-F0-9 |
FILTER_FLAG_STRIP_LOW | 剥离 ASCII 值低于 32 的字符 |
FILTER_FLAG_STRIP_HIGH | 剥离 ASCII 值高于 127 的字符 |
FILTER_FLAG_ENCODE_LOW | 编码 ASCII 值低于 32 的字符 |
FILTER_FLAG_ENCODE_HIGH | 编码 ASCII 值高于 127 的字符 |
FILTER_FLAG_ENCODE_AMP | 编码 & |
FILTER_FLAG_NO_ENCODE_QUOTES | 不要编码 ' 和 " |
FILTER_FLAG_EMPTY_STRING_NULL | 未在使用 |
FILTER_FLAG_ALLOW_FRACTION | 允许使用句点 (.) 作为数字的小数分隔符 |
FILTER_FLAG_ALLOW_THOUSAND | 允许使用逗号 (,) 作为数字的千位分隔符 |
FILTER_FLAG_ALLOW_SCIENTIFIC | 允许在数字中使用 e 或 E 进行科学记数法 |
FILTER_FLAG_PATH_REQUIRED | URL 必须包含路径部分 |
FILTER_FLAG_QUERY_REQUIRED | URL 必须包含查询字符串 |
FILTER_FLAG_IPV4 | 允许 IP 地址为 IPv4 格式 |
FILTER_FLAG_IPV6 | 允许 IP 地址为 IPv6 格式 |
FILTER_FLAG_NO_RES_RANGE | 对保留的 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 | 对私有 IPv4 范围进行验证失败:10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16,以及对以 FD 或 FC 开头的 IPv6 地址进行验证失败 |
FILTER_FLAG_EMAIL_UNICODE | 允许电子邮件地址的本地部分包含 Unicode 字符 |
FILTER_REQUIRE_SCALAR | 值必须是标量 |
FILTER_REQUIRE_ARRAY | 值必须是数组 |
FILTER_FORCE_ARRAY | 将标量值视为数组,其中标量值作为唯一元素 |
FILTER_NULL_ON_FAILURE | 对于无法识别的布尔值,在失败时返回 NULL |
FILTER_VALIDATE_BOOLEAN | 验证布尔值 |
FILTER_VALIDATE_EMAIL | 将值验证为有效的电子邮件地址 |
FILTER_VALIDATE_FLOAT | 将值验证为浮点数 |
FILTER_VALIDATE_INT | 将值验证为整数 |
FILTER_VALIDATE_IP | 将值验证为 IP 地址 |
FILTER_VALIDATE_MAC | 将值验证为 MAC 地址 |
FILTER_VALIDATE_REGEXP | 根据正则表达式验证值 |
FILTER_VALIDATE_URL | 将值验证为 URL |
FILTER_SANITIZE_ADD_SLASHES | 作为 FILTER_SANITIZE_MAGIC_QUOTES 的替代品添加 |
FILTER_SANITIZE_EMAIL | 从电子邮件地址中删除所有非法字符 |
FILTER_SANITIZE_ENCODED | 删除/编码特殊字符 |
FILTER_SANITIZE_MAGIC_QUOTES | 应用 addslashes()。 在 PHP 7.3.0 中弃用,并在 PHP 8.0.0 中删除 |
FILTER_SANITIZE_NUMBER_FLOAT | 删除所有字符,除了数字、+- 符号,以及可选的 .,eE |
FILTER_SANITIZE_NUMBER_INT | 删除所有字符,除了数字和 + - 符号 |
FILTER_SANITIZE_SPECIAL_CHARS | 删除特殊字符 |
FILTER_SANITIZE_STRING | 从字符串中删除标签/特殊字符。 在 PHP 8.1.0 中弃用 |
FILTER_SANITIZE_STRIPPED | FILTER_SANITIZE_STRING 的别名。 在 PHP 8.1.0 中弃用 |
FILTER_SANITIZE_URL | 从 URL 中删除所有非法字符 |
FILTER_UNSAFE_RAW | 不做任何操作,可选地剥离/编码特殊字符 |
FILTER_CALLBACK | 调用用户定义的函数来过滤数据 |