PHP 过滤器


2021年12月18日, Learn eTutorial
2156

在本 PHP 教程中,您将学习有关 PHP 中不同类型过滤器的所有知识。我们将详细讨论过滤器的类型和各种过滤器函数。

PHP中的过滤器是什么意思?

PHP Filter 是一个数据过滤扩展,可以对数据进行清理或验证。它对于网站的安全至关重要,特别是当数据来自未知或外部来源时,例如用户提供的信息。例如,来自 HTML 表单的数据。

PHP中的不同类型的过滤器

  •     验证
  •     清理

PHP中的验证过滤器是什么?

验证用于确定数据是否符合特定标准。例如,使用 FILTER_VALIDATE_EMAIL 将检查给定数据是否为有效电子邮件,通过使用验证,它不会影响指定数据。

PHP中的清理过滤器是什么?

清理不同于验证,清理将清理给定数据以确保没有不想要的字符存在,方法是删除或修改数据。例如,使用 FILTER_SANITIZE_URL 将删除所有不适用于 URL 地址的字符。但是,它不验证数据。

PHP中用于过滤数据的所有不同函数是什么

通过使用过滤器函数,可以过滤来自不安全源的数据。

  1.    filter_var(): 用于使用指定的过滤器过滤变量

    语法

    
    filter_var(var, filtername, options)
    
    

    示例

    
        <?php
        $email = "[email protected]";
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
            echo ("$email is a valid email address");
        } else {
            echo ("$email is not a valid email address");
        }
        ?>
    
    

    输出

    
    [email protected] is a valid email address
    
  2.    filter_var_array(): 用于过滤多个变量,主要是变量数组

    语法

    
    filter_var_array(data_array, args, add_empty)
    
    

    示例

    
    <?php
    $details = array(
        'username' =--> 'johndoe',
        'age' => '23',
        'email' => '[email protected]',
    );
    $filtere_data = filter_var_array($details);
    var_dump($filtere_data);    
    ?>
    
    

    输出

    
    array(3) {
      ["username"]=>
      string(7) "johndoe"
      ["age"]=>
      string(2) "23"
      ["email"]=>
      string(16) "[email protected]"
    }
    
  3.    filter_has_var(): 用于检查指定输入类型的变量是否存在

    语法

    
    filter_has_var(type, variable)
    
    

    示例

    
    <?php
    if (!filter_has_var(INPUT_GET, "email")) {
        echo ("Email is available...");
    } else {
        echo ("Email is not available...");
    }
    ?>
    
    

    输出

    
    Email is not available...
    

    在上面的示例中,检查了通过 GET 方法从表单传递的值。要检查的输入类型。可以是以下之一

  •  INPUT_GET
  •  INPUT_POST
  •  INPUT_COOKIE
  •  INPUT_SERVER
  •  INPUT_ENV 
     
  1.    filter_id(): 用于返回给定过滤器的特定过滤器 ID

    语法

    
    filter_id(filter_name)
    
    

    示例

    
    <?php
    echo (filter_id("validate_url"));
    echo "\n";
    echo (filter_id("validate_email"));
    ?>
    
    

    输出

    
    273
    274
    
  2.    filter_list(): 用于返回所有支持的过滤器名称

    语法

    
    filter_list()
    
    

    示例

    
    <?php
    print_r(filter_list());
    ?>
    
    

    输出

    
    PHP - Filter
    
  3.    filter_input(): 用于访问外部变量并对其进行过滤

    语法

    
    filter_input(type, variable, filter, options)
    
    

    示例

    
    !DOCTYPE html>
    <html>
    <body><
        <form method="get" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
            E-mail: <input type="text" name="email">
            <input type="submit" name="submit" value="Submit">
        </form>
        <?php
        if (isset($_GET["email"])) {
            if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL) === false) {
                echo ("The email is valid");
            } else {
                echo ("The email is not valid");
            }
        }
        ?>
    </body>
    </html>
    
    
    

    输出

    
    PHP - Filter
    
  4.    filter_input_array(): 用于访问多个外部变量并对其进行过滤

    语法

    
    filter_input_array(type, definition, add_empty)
    
    

    示例

    
    <html>
    <body>
        <form method="post" action=" <?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?> ">
            Name: <input type="text" name="name">
            Age: <input type="text" name="age">
            E-mail: <input type="text" name="email">
            <input type="submit" name="submit" value="Submit">
        </form>
        <?php
    $filters = array(
            "name" => array(
                "filter" => FILTER_CALLBACK,
                "flags" => FILTER_FORCE_ARRAY,
                "options" => "ucwords"
            ),
            "age"   => array(
                "filter" => FILTER_VALIDATE_INT,
                "options" => array("min_range" => 1, "max_range" => 120)
            ),
            "email" => FILTER_VALIDATE_EMAIL
        );
        print_r(filter_input_array(INPUT_POST, $filters));
        ?>
    </body>
    </html>
    
    
    

    输出

    
    PHP - Filter
    

PHP中所有不同类型的过滤器常量是什么?

以下是一些预定义的过滤器常量

验证过滤器常量

 1.    FILTER_VALIDATE_BOOLEAN: 用于验证布尔数据
 2.    FILTER_VALIDATE_INT: 用于验证整数数据
 3.    FILTER_VALIDATE_FLOAT: 用于验证浮点数据
 4.    FILTER_VALIDATE_REGEXP: 用于验证正则表达式
 5.    FILTER_VALIDATE_IP: 用于验证 IP 地址
 6.    FILTER_VALIDATE_EMAIL: 用于验证电子邮件地址
 7.    FILTER_VALIDATE_URL: 用于验证 URL

清理过滤器常量

 1.    FILTER_SANITIZE_EMAIL: 用于从电子邮件地址中删除所有非法字符
 2.    FILTER_SANITIZE_ENCODED: 用于删除/编码特殊字符
 3.    FILTER_SANITIZE_MAGIC_QUOTES: 用于应用 addslashes() 函数
 4.    FILTER_SANITIZE_NUMBER_FLOAT: 用于删除除数字、+- 和可选的小数点之外的所有字符。
 5.    FILTER_SANITIZE_NUMBER_INT: 用于删除除数字和 + - 之外的所有字符
 6.    FILTER_SANITIZE_SPECIAL_CHARS: 用于删除特殊字符
 7.    FILTER_SANITIZE_FULL_SPECIAL_CHARS: 用于编码可能通过 FILTER_FLAG_NO_ENCODE_QUOTES 禁用的引号。
 8.    FILTER_SANITIZE_STRING: 用于从字符串中删除标签/特殊字符
 9.    FILTER_SANITIZE_STRIPPED: 用作 FILTER_SANITIZE_STRING 的别名
10.    FILTER_SANITIZE_URL: 用于从 URL 中删除所有非法字符

其他过滤器常量

 1.    FILTER_UNSAFE_RAW: 用于不做任何操作,可选地删除/编码特殊字符
 2.    FILTER_CALLBACK: 用于调用用户定义的函数来过滤数据