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

  • 相关阅读:
    input回车问题
    Jquery-无法有效获取当前窗口高度
    微信JSSDK支付接口-安卓机无法正常调起接口
    Kafka 1.1新功能:数据的路径间迁移
    KSQL和Flink SQL的比较
    关于Kafka监控方案的讨论
    关于Kafka配额的讨论(2)
    关于Kafka配额的讨论(1)
    【译】Flink + Kafka 0.11端到端精确一次处理语义的实现
    Kafka元数据缓存(metadata cache)
  • 原文地址:https://www.cnblogs.com/myvic/p/8066364.html
Copyright © 2011-2022 走看看