变量过滤处理(PHP)

        最近自己写了过滤类,主要利用率了filter函数。请指教!

<?php
/**
 * 参数验证类
 * @author bob <983194768@qq.com>
 * 
 * @version $Id $
 */
class Filter
{
    /**
     * 变量类型
     */
    public static $varType    = array(
                                 'GET'     => INPUT_GET,
                                 'POST'    => INPUT_POST,
                                 'COOKIE'  => INPUT_COOKIE,
                                 'SERVER'  => INPUT_SERVER,
                                 'ENV'     => INPUT_ENV
                                );
    /**
     * 字符类型
     *
     */
    public static $filterType = array(
                                 'STRING'  =>  FILTER_SANITIZE_STRING,
                                 'INT'     =>  FILTER_VALIDATE_INT,
                                 'BOOLEAN' =>  FILTER_VALIDATE_BOOLEAN,
                                 'FLOAT'   =>  FILTER_VALIDATE_FLOAT,
                                 'REGEXP'  =>  FILTER_VALIDATE_REGEXP,
                                 'URL'     =>  FILTER_VALIDATE_URL,
                                 'EMAIL'   =>  FILTER_VALIDATE_EMAIL,
                                 'IP'      =>  FILTER_VALIDATE_IP,
                                );
    
    /**
     * 检查是否存在指定输入类型的变量
     *
     * @param string $setVarType 类型 post get ……
     * @param string $varName    key
     *
     * @return void
     */
    public static function varExists($setVarType, $varName)
    {
        $FilterVarType = self::_getVarType($setVarType);

        if (is_null($FilterVarType)) {
            return false;
        }

        return filter_has_var(self::$varType[$FilterVarType], $varName);
    }
    
    /**
     * 过滤外部变量
     *
     * @param string $setVarType 类型 post get ……
     * @param string $varName    key
     * @param string $filterType filter type
     *
     * @return void
     */
    public static function filterInput($setVarType, $varName, $filterType = 'INT')
    {
        $FilterVarType = self::_getVarType($setVarType);
        $filterType    = self::_getFilterType($filterType);

        if (is_null($FilterVarType) || is_null($filterType)) {
            return false;
        }

        return filter_input($FilterVarType, $varName, $filterType);
    }
    
    /**
     * 通过指定的过滤器过滤变量
     *
     * @param string $var 变量
     * @param string $filterType 变量类型
     *
     * @return void
     */
    public static function filterVar($var, $filterType)
    {
        if (!trim($var)) {
            return false;
        }
       
        $filterType = self::_getFilterType($filterType);

        return filter_var($var, $filterType);
    }
    
    /**
     * 验证是字符串
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isString($var)
    {
        return self::filterVar($var, 'STRING');
    }
    
    /**
     * 验证是整形
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isInt($var)
    {
        return self::filterVar($var, 'INT');
    }
    
    /**
     * 验证是布尔型
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isBoolean($var)
    {
        return self::filterVar($var, 'BOOLEAN');
    }
    
    /**
     * 验证是浮点型
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isFloat($var)
    {
        return self::filterVar($var, 'FLOAT');
    }
    
    /**
     * 验证URL格式
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isUrl($var)
    {
        
        return self::filterVar($var, 'URL');
    }
    
    /**
     * 验证EMAIL格式
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isEmail($var)
    {

        return self::filterVar($var, 'EMAIL');
    }

    /**
     * 验证手机号格
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isPhone($var)
    {
        $filterType = 'regexp';
        $regexp  = array('options' => array("regexp" => '/^[1][358][0-9]{9}$/'));

        return self::regexp($var, $filterType, $regexp);
    }

    
    /**
     * 验证IP格式
     *
     * @param string $var 要验证字符
     *
     * @return void
     */
    public static function isIp($var)
    {
        return self::filterVar($var, 'IP');
    }

    /**
     * 正则校验变量类型
     *
     * @param string $var    变量
     * @param array  $option array("options"=>array("regexp"=>"/^d(.*)/"))
     *
     * @return void
     */
    public static function regexp($var, $filterType, $option)
    {

        $filterType = self::_getFilterType($filterType);
        
        return filter_var($var, $filterType, $option);
    }

    /**
     * 验证类型
     *
     * @param string $type
     * 
     * @return bool
     */
    public static function filterType($type)
    {
        $filter_list = self::_lists();
        return array_search($type, $filter_list) !== false ? true : false;
    }

    /**
     * 过滤字符串中的html标签
     *
     * @param string $string 待转换的字符串
     *
     * @return string
     */
    static public function stripTags($string)
    {
        return strip_tags($string);
    }

    /**
     * 过滤字符串中的回车换行
     *
     * @param string $string 待转换的字符串
     *
     * @return string
     */
    static public function stripLines($string)
    {
        return str_replace(array("\n", "\r"), '', $string);
    }

    /**
     * 过滤字符串中<script>脚本
     *
     * @param string $string 待过滤的字符串
     *
     * @return string
     */
    static public function stripScript($string)
    {
        $reg = "/<script[^>]*?>.*?<\/script>/is";
        
        return preg_replace($reg, '', $string);
    }

    /**
     * 获取字符类型
     * 
     * @return array
     */
    private static function _lists()
    {
        return filter_list();
    }

    /**
     * 验证请求类型
     *
     * @param string $setVarType 变量类型 eg:post , get
     * 
     * @return void
     */
    private static function _getVarType($setVarType)
    {
        $setVarType = strtoupper($setVarType);

        return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
    }

    /**
     * 验证字符类型
     *
     * @param string $setFilterType 字符类型 eg:int, string, url
     * 
     * @return void
     */
    private static function _getFilterType($setFilterType)
    {
        $setFilterType = strtoupper($setFilterType);

        return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
    }
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值