zoukankan      html  css  js  c++  java
  • PHP过滤器

    这里介绍的过滤器包括:

    1、filter_input

    2、filter_input_array

    3、filter_var

    4、filter_var_array

    5、filter_has_var

    一、查看有哪些filter可用

    首先,我们需要知道现在有哪些filter可用。这时候需要用到filter_list()和filter_id(),如下:

    <?php 
    $filters = filter_list(); 
    foreach($filters as $filter_name) { 
        echo $filter_name .": ".filter_id($filter_name) ."<br>"; 
    } 
    ?> 
    
    Will result in: 
    boolean: 258 
    float: 259 
    validate_regexp: 272 
    validate_url: 273 
    validate_email: 274 
    validate_ip: 275 
    string: 513 
    stripped: 513 
    encoded: 514 
    special_chars: 515 
    unsafe_raw: 516 
    email: 517 
    url: 518 
    number_int: 519 
    number_float: 520 
    magic_quotes: 521 
    callback: 1024

    上面的代码中,filter_list()输出可用filter的list 到filters这一array,然后,历遍这一array,显示filter的名字和id。

    这里不做多的解释,反正可用的filter就上面这么多。

    然后,我们来看看我们可以用上面的过滤器做些什么。

    二、filter_input和filter_input_array

    事实上两个是同一个过滤器,但是filter_input_array是可以接受“过滤器组合”的,具体调用如下:

    mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
    
    mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )

    上面的定义中:

    1)$type接受的参数是固定的,是INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, 或者INPUT_ENV中的一个。

    2)filter_input中,$variable_name是要使用过滤器的变量名,$filter就是我们上面filter_list过的可用filter之一,$filter可以是一个array。也就是,我们对$variable_name进行过滤时,可以用多个filter。

    3)$options是具体的filter要用到的参数,不同的filter需要不同的参数,有些甚至不需要参数。

    4)filter_input_arrary中,第二个参数是$definition的一个array。根据manual提供的例子,所谓definition,也就是$variable-$filter-$options构成的一个组合。看起来就像是,我们对多个filter_input进行了一次性定义,然后一次性的执行。

    示例代码:

    <?php
    $search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
    echo "You have searched for $search_html.
    ";
    ?>
    <?php
    // 下面定义了一个array,分别为product_id,component,versions,doesnotexist定义了一个过滤规则。
    $args = array(
        'product_id'   => FILTER_SANITIZE_ENCODED,
        'component'    => array('filter'    => FILTER_VALIDATE_INT,
                                'flags'     => FILTER_REQUIRE_ARRAY, 
                                'options'   => array('min_range' => 1, 'max_range' => 10)
                               ),
        'versions'     => FILTER_SANITIZE_ENCODED,
        'doesnotexist' => FILTER_VALIDATE_INT,
    );
    
    //执行了上面定义的几条过滤规则
    $myinputs = filter_input_array(INPUT_POST, $args); var_dump($myinputs); echo " "; ?>

    三、filter_var和filter_var_array

    和上面的filter_input其实是一样的,只是,filter_var的输入是var,而不再是固定的那几个选项。

    例如:

    <?php
    var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
    var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
    ?>

    上面的输出是:

    string(15) "bob@example.com"
    bool(false)

    3、filter_has_var

    这个事实上不能算是过滤器,就是看我们的输入里有没有名为variable_name的参数,所以它只返回true和false。具体参数参考filter_input,举个栗子就搞定:

    <?php
    if ( filter_has_var(INPUT_GET, 'email') ) {
            echo "Email Found";
    }else{
            echo "Email Not Found";
    }
    ?>
  • 相关阅读:
    MySQL-LSN
    MySQL Binlog三种格式介绍及分析
    MySQL中的seconds_behind_master的理解
    MySQL的四种事务隔离级别
    pt-table-sync修复mysql主从不一致的数据
    MySQL主从不同步、数据不一致解决办法
    nginx的应用【静态代理、动静分离】
    Redis数据缓存淘汰策略【FIFO 、LRU、LFU】
    Java基本知识点o(1), o(n), o(logn), o(nlogn)的了解
    JS函数篇【2】
  • 原文地址:https://www.cnblogs.com/pied/p/3600053.html
Copyright © 2011-2022 走看看