filter_input()

1. 定义

该函数通过检查指定类型中是否存在指定变量,并使用特定过滤器处理该变量。 成功时返回所请求的变量,过滤失败则返回FALSE,变量不存在则返回FALSE。

2. 语法

filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) : mixed

3. 参数说明

参数 可选性 数据类型 描述
$type 必需 整型 指定类型
$variable_name 必需 字符串 指定类中中的变量名
$filter 可选 整型 过滤器ID
$options 可选 mixed 过滤器选项的关联数组

其中,$type有这几个值:INPUT_GETINPUT_POSTINPUT_COOKIEINPUT_SERVERINPUT_ENV

4. 示例

首先准备一个名为filter_input.html的文件,并添加如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>filter_input()函数</title>
</head>
<body>
    <form action="./filter_input.php" method="get">
        <label for="name">请输入姓名:<input type="text" name="name" id=""></label><br>
        <label for="pwd">请输入密码:<input type="password" name="pwd" id=""></label><br>
        <label for="email">请输入邮箱:<input type="email" name="email" id=""></label><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

然后在同级目录下建立文件filter_input.php,并键入如下内容,最后填写filter_input.html文件中的表单,提交并查看结果。

<?php

// filter_input()
// 通过检查指定类型中是否存在指定变量,并使用特定过滤器处理该变量

// 使用 filter_input() 函数后不需要再检验值是否存在了
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_STRING, ['flags'=>FILTER_FLAG_NO_ENCODE_QUOTES]);// 用户名仅作简单校验:将可能包含的标签去掉
$pwd = filter_input(INPUT_GET, 'pwd', FILTER_SANITIZE_URL);// 字母、数字和特殊符号 $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=
$email = filter_input(INPUT_GET, 'email', FILTER_SANITIZE_EMAIL);
$none = filter_input(INPUT_GET, 'none');// 该变量不存在

var_dump([
    'name'=>$name,
    'pwd'=>$pwd,
    'email'=>$email,
    'none'=>$none
]);
/**
 * 类似输出:
array(4) {
  ["name"]=>
  string(5) "nihao"
  ["pwd"]=>
  string(21) "fdfd23422,/'\/,'\1531"
  ["email"]=>
  string(15) "hfisfjd@dks.com"
  ["none"]=>
  NULL
}
 */

5. 延展阅读

  • filter_var():使用特定的过滤器过滤一个变量。返回过滤后的值,如果过滤失败则返回FALSE
  • filter_input_array():通过检查指定类型中存在的一系列变量,并使用特定过滤器处理该系列变量
  • filter_var_array():以数组形式过滤多个变量,成功时返回包含所请求变量的数组,过滤失败则返回FALSE,变量不存在则返回NULL