PHP filter_input() 函数

定义和用法

filter_input() 函数从脚本外部获取输入,并进行过滤。 php

本函数用于对来自非安全来源的变量进行验证,好比用户的输入。 正则表达式

本函数可从各类来源获取输入: 数组

  • INPUT_GET
  • INPUT_POST
  • INPUT_COOKIE
  • INPUT_ENV
  • INPUT_SERVER
  • INPUT_SESSION (Not yet implemented)
  • INPUT_REQUEST (Not yet implemented)

若是成功,则返回被过滤的数据,若是失败,则返回 false,若是 variable 参数未设置,则返回 NULL。 安全

语法

filter_input(input_type, variable, filter, options)
参数 描述
input_type 必需。规定输入类型。参见上面的列表中可能的类型。
variable 规定要过滤的变量。
filter

可选。规定要使用的过滤器的 ID。默认是 FILTER_SANITIZE_STRING。 函数

请参见完整的 PHP Filter 函数参考手册,得到可能的过滤器。 编码

过滤器 ID 能够是 ID 名称 (好比 FILTER_VALIDATE_EMAIL),或 ID 号(好比 274)。 url

options 规定包含标志/选项的数组。检查每一个过滤器可能的标志和选项。

例子

在本例中,咱们使用 filter_input() 函数来过滤一个 POST 变量。所接受的 POST 变量是合法的 e-mail 地址。 code

<?php
if (!filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL))
 {
 echo "E-Mail is not valid";
 }
else
 {
 echo "E-Mail is valid";
 }
?>

输出相似: regexp

E-Mail is valid

PHP Filters

ID 名称 描述
FILTER_CALLBACK 调用用户自定义函数来过滤数据。
FILTER_SANITIZE_STRING 去除标签,去除或编码特殊字符。
FILTER_SANITIZE_STRIPPED "string" 过滤器的别名。
FILTER_SANITIZE_ENCODED URL-encode 字符串,去除或编码特殊字符。
FILTER_SANITIZE_SPECIAL_CHARS HTML 转义字符 '"<>& 以及 ASCII 值小于 32 的字符。
FILTER_SANITIZE_EMAIL 删除全部字符,除了字母、数字以及 !#$%&'*+-/=?^_`{|}~@.[]
FILTER_SANITIZE_URL 删除全部字符,除了字母、数字以及 $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=
FILTER_SANITIZE_NUMBER_INT 删除全部字符,除了数字和 +-
FILTER_SANITIZE_NUMBER_FLOAT 删除全部字符,除了数字、+- 以及 .,eE。
FILTER_SANITIZE_MAGIC_QUOTES 应用 addslashes()。
FILTER_UNSAFE_RAW 不进行任何过滤,去除或编码特殊字符。
FILTER_VALIDATE_INT 在指定的范围以整数验证值。
FILTER_VALIDATE_BOOLEAN 若是是 "1", "true", "on" 以及 "yes",则返回 true,若是是 "0", "false", "off", "no" 以及 "",则返回 false。不然返回 NULL。
FILTER_VALIDATE_FLOAT 以浮点数验证值。
FILTER_VALIDATE_REGEXP 根据 regexp,兼容 Perl 的正则表达式来验证值。
FILTER_VALIDATE_URL 把值做为 URL 来验证。
FILTER_VALIDATE_EMAIL 把值做为 e-mail 来验证。
FILTER_VALIDATE_IP 把值做为 IP 地址来验证。
相关文章
相关标签/搜索