zoukankan      html  css  js  c++  java
  • php的过滤器功能

    1.简介

    PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。

    1.1 外部数据:

    • 来自表单的输入数据
    • Cookies
    • Web services data
    • 服务器变量
    • 数据库查询结果

    1.2 验证和纠错

    FILTERS, 该扩展可以用来验证(validation)和纠错(sanitization);

    验证(validation)主要用来检查数据是不是符合特定条件, 例如: 当传入 FILTER_VALIDATE_EMAIL 时, 它将检查该邮件地址是否有效, 当发现不符合规范时, 不会进行纠错处理
     
    纠错(sanitization)将会对数据进行处理, 将不符合规范的字符进行转换或移除, 例如: 当传入 FILTER_SANITIZE_EMAIL 时, 它将会处理邮件地址所包含不符合规范的字符,

    但不会去检查该邮件地址是否有效。

    2.过滤器相关函数

    2.1 filter_var(); 通过一个指定的过滤器来过滤单一的变量

    // 1. 过滤器
    $int = '123';
    $res = filter_var($int,FILTER_VALIDATE_INT);
    
    var_dump($res);
    
    echo '<hr/>';
    
    // 2. 过滤选项
    $int_options = [
        'options' => [
            'min_range' => 0,
            'max_range' => 256
        ]
    ];
    $filter = filter_var($int,FILTER_VALIDATE_INT,$int_options);
    
    var_dump($filter);
    
    echo '<hr/>';
    // 3.filter callback 函数
    function convert_space( $str ){
        return str_replace('_','.',$str);
    }
    $str = 'www_myvic_con!';
    echo filter_var($str,FILTER_CALLBACK,['options'=>'convert_space']);
    echo '<br/>';

    2.2 filter_var_array() 函数获取多个变量,并进行过滤

    // filter_var_array()
    $arr = [
        'name'  => 'vic',
        'age'   =>30,
        'email' =>'vic@qq.com'
    ];
    
    $filters = [
        'name' => [
            'filter'  => FILTER_CALLBACK,
            'flags'   => FILTER_FORCE_ARRAY,
            'options' =>'ucwords'
        ],
        'age'  => [
            'filter'  => FILTER_VALIDATE_INT,
            'options' => [
                'min_range' => 1,
                'max_range' => 120
            ]
        ],
        'email' => FILTER_VALIDATE_EMAIL
    
    ];
    var_dump(filter_var_array($arr,$filters));

    2.3 filter_input() 函数从脚本外部获取输入(比如表单输入),并进行过滤。

        该函数可从各种来源获取输入:

    • INPUT_GET
    • INPUT_POST
    • INPUT_COOKIE
    • INPUT_ENV
    • INPUT_SERVER
    • INPUT_SESSION(尚未推行)
    • INPUT_REQUEST(尚未推行)
    filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)

    2.4 filter_input_array() 函数从脚本外部获取多项输入(比如表单输入),并进行过滤。同filter_input()

    $filters = array
    (
        "name" => array
        (
            "filter"=>FILTER_SANITIZE_STRING
        ),
        "age" => array
        (
            "filter"=>FILTER_VALIDATE_INT,
            'flags' =>FILTER_REQUIRE_ARRAY, //需求的值是个数组 
            "options"=>array
            (
                "min_range"=>1,
                "max_range"=>120
            )
        ),
        "email"=> FILTER_VALIDATE_EMAIL
    );
    $result = filter_input_array(INPUT_GET, $filters);
    var_dump($result);

    2.5 filter_has_var()

    filter_has_var() 函数检查是否存在指定输入类型的变量。

    如果成功则返回 TRUE,如果失败则返回 FALSE。

    可能的输入类型:

    • INPUT_GET
    • INPUT_POST
    • INPUT_COOKIE
    • INPUT_SERVER
    • INPUT_ENV
    $filter = filter_has_var(INPUT_GET, 'email');

    参考资料:http://php.net/manual/zh/filter.filters.php

  • 相关阅读:
    [SHOI2008]堵塞的交通
    [SHOI2008]汉诺塔
    [JSOI2008]最小生成树计数
    [JSOI2008]球形空间产生器
    [HNOI2014]画框
    HDU 2255 奔小康赚大钱
    [SDOI2017]新生舞会
    [BZOJ2285][SDOI2011]保密
    [BZOJ3232]圈地游戏
    [HDU5909]Tree Cutting
  • 原文地址:https://www.cnblogs.com/myvic/p/8066364.html
Copyright © 2011-2022 走看看