zoukankan      html  css  js  c++  java
  • php filter

     在PHP出现至今,一直在不断的更新版本,增加新的功能,供我们大家使用,满足我们的需求。PHP 5.2以及更高的版本,PHP filter被绑定于系统,它可以对数据进行自动的过滤和判断。
    第一种、PHP filter判断一个变量的内容是否符合要求
    使用函数filter_var,第一个参数是要判断的变量。第二个参数是判断的要求,FILTER_VALIDATE_EMAIL表示判断是否符合email格式。如果变量是类似’boy@163.com’的数据,系统就会完整的输出‘boy@163.com’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出空字符串。
    $email = ‘boy@163.com’;  
    echo filter_var($email, 
    FILTER_VALIDATE_EMAIL);  

    第二种、PHP filter根据要求过滤一个变量的内容
    和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。如果变量是类似’boy@163.com’的数据,系统就会完整的输出’boy@163.com’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果变量没有设置内容,系统输出空字符串。如果是’boy阿三’,系统会把email格式中不允许的东西去除,输出’boy’。
    $email = ‘boy@163.com’;  
    echo filter_var($email,
    FILTER_SANITIZE_EMAIL);  

    第三种、PHP filter判断输入的变量的内容是否符合要求
    使用函数filter_input。第一个参数表示从那里获得的数据,INPUT_POST表示通过POST方法传递过来,还可以使用INPUT_GET, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV,代表相应的途径。第二个参数就是数据的名称。第三个参数代表过滤的要求,FILTER_VALIDATE_EMAIL表示判断数据是否符合email格式。
    假设通过表单的POST过来的一个字段email。如果是类似’boy@163.com’的数据,系统就会完整的输出’boy@163.com’。如果是错误的格式,比如’boy’,就会输出false。如果没有填写表单中的email字段,系统输出null,也就是空。
    echo filter_input(INPUT_POST, 
    ‘email’, FILTER_VALIDATE_EMAIL); 

    第四种、PHP filter根据要求过滤输入的变量的内容
    和上面唯一的不同是第二个参数使用FILTER_SANITIZE_EMAIL,输出的结果会不同。假设通过表单的POST过来的一个字段email。
    如果是类似’boy@163.com’的数据,系统就会完整的输出’boy@163.com’。如果是错误的格式,比如’boy-afds3′,只要是数字和字母和划线等email格式中可以出现的内容,系统同样会完整的输出’boy-afds3′。如果没有填写表单中的email字段,系统输出null,也就是空。如果是’boy阿三’源码天空,系统会把email格式中不允许的东西去除,输出’boy’。
    echo filter_input
    (INPUT_POST, ‘email’, 
    FILTER_SANITIZE_EMAIL);  
    以上就是PHP filter的具体功能介绍,希望对又需要的朋友有所帮助。

    来自:http://www.codesky.net/article/200912/140526.html

      php5.20之后增加了一个filter过滤器的扩展,主要用于验证和过滤数据,通常用于用户提交的表单数据,COOKIE等。这对提高程序的安全性和远离SQL注入带来了极大的好处。LFilter类在调用filter API的基础上,封装一个较为完整的类。拿来和大家分享,欢迎指正。注意:filter对于$_FILES 上传文件的类型数据,无法过滤。下面是一个使用Filter自己封装的类。
    在本例中,我们使用 filter_input_array() 函数来过滤三个 POST 变量。所接受的 POST 变量是姓名、年龄以及电子邮件地址:

    1. <?php  
    2. $filters = array  
    3.  (  
    4.  "name" => array  
    5.   (  
    6.   "filter"=>FILTER_CALLBACK,  
    7.   "flags"=>FILTER_FORCE_ARRAY,  
    8.   "options"=>"ucwords"  
    9.   ),  
    10.  "age" => array  
    11.   (  
    12.   "filter"=>FILTER_VALIDATE_INT,  
    13.   "options"=>array  
    14.    (  
    15.    "min_range"=>1,  
    16.    "max_range"=>120  
    17.    )  
    18.   ),  
    19.  "email"=> FILTER_VALIDATE_EMAIL,  
    20.  );  
    21. print_r(filter_input_array(INPUT_POST, $filters));  
    22. ?>  


    输出类似:
    Array
    (
    [name] => Peter
    [age] => 41
    [email] => peter@example.com
    )

    来源:http://www.cardii.net/php-filter


    <?php  

    class LFilter  

    {  

         private static $_options = array(  

             'int'   => FILTER_VALIDATE_INT,//validate value as integer  

             'bool'  => FILTER_VALIDATE_BOOLEAN,//retrun true for "1","true","on","yes"  

             'float' => FILTER_VALIDATE_FLOAT,//validate value as float  

             'regexp'=> FILTER_VALIDATE_REGEXP,  

             'url'   => FILTER_VALIDATE_URL,//validate value as url  

             'email' => FILTER_VALIDATE_EMAIL,//validate value as e-mail  

             'ip'    => FILTER_VALIDATE_IP,//validate value as IP address  

        

             'string'  => FILTER_SANITIZE_STRING,  

             'stripped'=> FILTER_SANITIZE_STRIPPED,  

             'encoded' => FILTER_SANITIZE_ENCODED,//URL-encode string,optionally strip or encode special characters  

             'chars'    => FILTER_SANITIZE_SPECIAL_CHARS,  

             'semail'   => FILTER_SANITIZE_EMAIL,//remove all characters except letters,digits and !#$%&'*+-/=?^_`{|}~@.[]  

             'url'     => FILTER_SANITIZE_URL,  

             'sint'     => FILTER_SANITIZE_NUMBER_INT,  

             'sfloat'   => FILTER_SANITIZE_NUMBER_FLOAT,//Remove all characters except digits,+- and optionally .eE  

             'quotes'  => FILTER_SANITIZE_MAGIC_QUOTES,//Apply addslashes()  

        

             'octal'   => FILTER_FLAG_ALLOW_OCTAL,  

             'hex'     => FILTER_FLAG_ALLOW_HEX,  

             'slow'    => FILTER_FLAG_STRIP_LOW,  

             'shigh'   => FILTER_FLAG_STRIP_HIGH,  

             'elow'    => FILTER_FLAG_ENCODE_LOW,  

             'ehigh'   => FILTER_FLAG_ENCODE_HIGH,  

             'eamp'    => FILTER_FLAG_ENCODE_AMP,  

             'noquotes'=> FILTER_FLAG_NO_ENCODE_QUOTES,  

             'null'    => FILTER_FLAG_EMPTY_STRING_NULL,  

             'fraction'=> FILTER_FLAG_ALLOW_FRACTION,  

             'thousand'=> FILTER_FLAG_ALLOW_THOUSAND,  

             'scientific'=> FILTER_FLAG_ALLOW_SCIENTIFIC,  

             'srequired' => FILTER_FLAG_SCHEME_REQUIRED,  

             'ipv4'    => FILTER_FLAG_IPV4,  

             'ipv6'    => FILTER_FLAG_IPV6,  

             'callback' => FILTER_CALLBACK,  

             'array'   => FILTER_REQUIRE_ARRAY  

         );  

        

         private static $_data=array();  

         private static $_flag=array();  

        

         public static function getOption($key)  

         {  

             if(array_key_exists($key,self::$_options))  

                 return self::$_options[$key];  

             return NULL;  

         }  

        

         /**  

          * getInt 验证$_GET变量是否是整数  

          * e.g.  

          * <code>  

          * LFilter::getInt('id');  

          * </code>  

          *  

          * @param string $field  

          * @param int $min  

          * @param int $max  

          * @access public  

          * @return bool  

          */ 

         public static function getInt($int,$min=null,$max=null)  

         {  

             if($min||$max) self::$_data=array('min_range'=>$min,'max_range'=>$max);  

             return filter_input(INPUT_GET,$int,self::getOption('int'),self::$_data);  

         }  

        

         /**  

          * checkInt 检查$int变量是否是整数  

          * e.g.  

          * <code>  

          *  LFilter::checkInt($_GET['id']);  

          *  LFilter::checkInt($_GET['id'],20,2000);  

          * </code>  

          *  

          * @param var $int  

          * @param int $min  

          * @param int $max  

          * @static  

          * @access public  

          * @return bool  

          */ 

         public static function checkInt($int,$min=null,$max=null)  

         {  

             if($min||$max) self::$_data=array('min_range'=>$min,'max_range'=>$max);  

             return filter_var($int,self::getOption('int'),self::$_data);  

         }  

        

         /**  

          * postInt 检查$_POST变量是否是整数  

          * <code>  

          * LFilter::postInt('id');  

          * </code>  

          *  

          * @param string $int  

          * @param int $min  

          * @param int $max  

          * @static  

          * @access public  

          * @return bool  

          */ 

         public static function postInt($int,$min=null,$max=null)  

         {  

             if($min||$max) self::$_data=array('min_range'=>$min,'max_range'=>$max);  

             return filter_input(INPUT_POST,$int,self::getOption('int'),self::$_data);  

         }  

        

         /**  

          * getString 检查$_GET变量是否为字符串  

          * <code>  

          * LFilter::getString('name');  

          * LFilter::getString('name','chars');  

          * </code>  

          *  

          * @param mixed $str  

          * @param string $type  

          * @static  

          * @access public  

          * @return void  

          */ 

         public static function getString($str,$type='string') {  

             return filter_input(INPUT_GET,$str,self::getOption($type));  

         }     

        

         /**  

          * checkString 检测变量是否为字符串  

          *  

          * @param string $string  

          * @param string $type  

          * @param array $flag  

          * @static  

          * @access public  

          * @return void  

          */ 

         public static function checkString($string,$type='string',$flag=array())  

         {  

             return filter_var($string,self::getOption($type));  

         }  

        

         /**  

          * postString 检测$_POST变量是否为字符串  

          *  

          * @param mixed $string  

          * @param string $type  

          * @param array $flag  

          * @static  

          * @access public  

          * @return void  

          */ 

         public static function postString($string,$type='string',$flag=array())  

         {  

             return filter_input(INPUT_POST,$string,self::getOption($type));  

         }  

        

         /**  

          * postFloat 检测是否为浮点数  

          * <code>  

          * LFilter::postFloat('price');  

          * </code>  

          *  

          * @param mixed $float  

          * @param mixed $decimal  

          * @param mixed $allow  

          * @static  

          * @access public  

          * @return void  

          */ 

         public static function postFloat($float,$decimal=null,$allow=true)  

         {  

             if($decimal) self::$_data['options']['decimal']=$decimal;  

             self::$_data['flags']=self::getOption('thousand');  

             return filter_input(INPUT_POST,$float,self::getOption('float'),self::$_data);  

         }  

        

         public static function getFloat($float,$decimal=null,$allow=true)  

         {  

             if($decimal) self::$_data['options']['decimal']=$decimal;  

             self::$_data['flags']=self::getOption('thousand');  

             return filter_input(INPUT_GET,$float,self::getOption('float'),self::$_data);  

         }  

        

         public static function checkFloat($float,$decimal=null,$allow=true)  

         {  

             if($decimal) self::$_data['options']['decimal']=$decimal;  

             self::$_data['flags']=self::getOption('thousand');  

             return filter_var($float,self::getOption('float'),self::$_data);  

         }  

        

         public static function postEmail($email)  

         {  

             return filter_input(INPUT_POST,$email,self::getOption('email'));  

         }  

        

         public static function getEmail($email)  

         {  

             return filter_input(INPUT_GET,$email,self::getOption('email'));  

         }  

        

         public static function checkEmail($email)  

         {  

             return filter_var($email,self::getOption('email'));  

         }  

        

         public static function postUrl($url)  

         {  

             return filter_input(INPUT_POST,$url,self::getOption('url'));  

         }  

        

         public static function getUrl($url)  

         {  

             return filter_input(INPUT_GET,$url,self::getOption('url'));  

         }  

        

         public static function checkUrl($url)  

         {  

             return filter_var($url,self::getOption('url'));  

         }  

        

         public static function postIp($ip)  

         {  

             return filter_input(INPUT_POST,$ip,self::getOption('ip'));  

         }  

        

         public static function getIp($ip)  

         {  

             return filter_input(INPUT_GET,$ip,self::getOption('ip'));  

         }  

        

         public static function checkIp($ip)  

         {  

             return filter_var($ip,self::getOption('ip'));  

         }  

         /**  

          * postArray 对$_POST形式$args数组进行过滤,返回数组  

          * eg:  

          * <code>  

          * $args = array(  

          *      'productId' => 'int',  

          *      'name'  => 'string',  

          *      'tagId' => array('int','array'),  

          *      'price' => array('float')  

          *  );  

          * LFilter::postArray($args);  

          * </code>  

          *  

          * @param string $args  

          * @access public  

          * @return array  

          */ 

         public function postArray($args,$type=false)  

         {  

             if(empty($_POST)) return NULL;  

             return filter_input_array(INPUT_POST,self::getArrayArgs($args));  

         }  

        

         public function getArray($args,$type=false) {  

             if ( empty($_GET) ) return NULL;  

             return filter_input_array(INPUT_GET,self::getArrayArgs($args));  

         }  

         /**  

          * filterVarArray 对数据$data,以$args数组条件进行过滤,返回数组  

          *  

          * eg:  

          * <code>  

          * $data = array(  

          *      'product_id'    => 'libgd<script>',  

          *      'component'     => '10',  

          *      'versions'      => '2.0.33',  

          *      'testscalar'    => array('2', '23', '10', '12'),  

          *      'testarray'     => '2',  

          *  );  

          * $args = array(  

          *      'product_id'   => 'string',  

          *      'component'    => array('int','',array('min_range' => 1, 'max_range' => 11)),  

          *      'testscalar'   => array('int','array'),  

          *      'testarray'    => array('int','array')  

          *  );  

          * LFilter::checkArray($data,$args);  

          * </code>  

          *  

          * @param mixed $args  

          * @access public  

          * @return array  

          */ 

         public function checkArray($data,$args,$type=false) {  

             if(empty($data)) return NULL;  

             $defs = self::getArrayArgs($args,$type);  

             return filter_var_array($data,$defs);  

         }  

        

         /**  

          * getArrayArgs  将过滤条件转换成filter函数处理的数组  

          *  

          * @param mixed $args  

          * @access public  

          * @return array  

          */ 

         public static function getArrayArgs($args,$type=null) {  

             $defs = array();  

             foreach ($args as $key => $arg) {  

                 if(!is_array($arg)) $arg = array($arg);  

                 if(isset($arg[0])) $defs[$key]['filter'] = self::getOption($arg[0]);  

                 if(isset($arg[1])) $defs[$key]['flags'] = self::getOption($arg[1]);  

                 if(isset($arg[2])) $defs[$key]['options'] = self::getOption($arg[2]);  

             }  

             return $defs;  

         }  

    }  

    ?>
  • 相关阅读:
    ASP.NET 构建高性能网站 架构设计
    ASP.NET 构建高性能网站 架构设计
    Vim和Vi的常用命令
    Vim和Vi的常用命令
    Vim和Vi的常用命令
    【收藏】前端知识体系完整版本
    【收藏】前端知识体系完整版本
    Ubuntu-升级linux软件源,安装vim/五笔
    高阶函数---swift中的泛型介绍(一步步实现Map函数)
    Go基础学习(二)
  • 原文地址:https://www.cnblogs.com/liuwenbohhh/p/4415390.html
Copyright © 2011-2022 走看看