php 一个好用的参数验证类

<?php

/**
 * 参数验证类
 * libraries_include("","Validator.class.php");
 * @author lizhiqiang
 */
class Validator
{
    /**
     * 检查数据
     * @param string $value     需要验证的数值
     * @param string $ruleItem  验证规则
     * 例子: libraries_include("","Validator.class.php");
     *       Validator::check_param(100,"intval");
     *       Validator::check_param(100,array("intval",array("length"=>array(0,6))));
     */
    static function check_param($value="",$ruleItem)
    {
        $ruleResult = array();

        //如果没有设置规则 则返回true
        if($ruleItem == null || $ruleItem == "")
        {
            return true;
        }

        //如果是单条规则
        if(!is_array($ruleItem))
        {
            $ruleItem = trim($ruleItem);
            if(method_exists(Validator,$ruleItem))
            {
               return self::$ruleItem($value);
            }
            return true;
        }

        //如果是多条规则 则逐一进行验证
        foreach($ruleItem as $ruleKey => $ruleValue)
        {
            $ruleKey = trim($ruleKey);

            //判断检查规则中是否含有参数
            if(!is_array($ruleValue))
            {
                if(method_exists(Validator,$ruleKey))
                {
                    $ruleResult[] = self::$ruleKey($value);
                }else{
                    $ruleResult[] = true;
                }

            }else{
                if(method_exists(Validator,$ruleKey))
                {
                    $ruleResult[] = self::$ruleKey($value,$ruleValue);
                }else{
                    $ruleResult[] = true;
                }
            }
        }

        //检测多条规则的正确性
        if(in_array(false,$ruleResult))
        {
            return false;
        }else{
            return true;
        }
    }

    /**
     * 检测参数是否为数组
     * @param $value
     * @return bool
     */
    static public function is_array($value)
    {
        $result = false;
        if(!self::required($value)) return false;
        if(is_array($value))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 检测参数是否存在于数组中
     * @param  $value 参数值
     * @param  $data  数组
     * @return bool
     */
    static public function in_array($value,$data)
    {
        $result = false;
        if(!self::required($value)) return false;
        if(in_array($value,$data))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 检测参数是否为空
     * @param  string $value 参数
     * @return bool
     */
    static public function required($value)
    {
        if (!is_array($value))
        {
            return (trim($value) == '') ? FALSE : TRUE;
        }
        else {
            return ( ! empty($value));
        }
    }

    /**
     * 字符串验证
     * @param $value 参数值
     */
    static function string($value)
    {
        $result = false;
        if(!self::required($value)) return false;
        if(is_string($value))
        {
            $result = true;
        }
        return $result;
    }
    /**
     * 整数验证
     * @param $value 参数值
     */
    static function intval($value)
    {
        $result = false;
        if(self::number($value,"intval"))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 浮点型验证
     * @param $value 参数值
     */
    static function float($value)
    {
        $result = false;
        if(self::number($value,"float"))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 数字验证
     * @param $value 参数值
     * @param $flag  intval 整数  float 浮点数 numeric 数字
     */
    static function number($value,$flag)
    {
        $result = false;
        if(!self::required($value)) return false;
        if(!in_array($flag,array("intval","float","numeric")))
        {
            return false;
        }
        switch($flag)
        {
            case "intval":
                $result = (string)(int)$value == (string)$value ? true : false;
                $ss=1;
                break;
            case "float":
                $result = is_float($value);
                break;
            case "numeric":
                $result = is_numeric($value);
                break;
        }
        return $result;
    }

    /**
     * 长度验证
     * @param $value 参数值
     * @param array $range 取值范围
     */
    static function length($value,$range=array())
    {
        $result = false;
        if(!self::required($value)) return false;
        $length  = mb_strlen($value);
        list($min,$max) = $range;
        if($length>=$min and $length<=$max)
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 手机号验证
     * @param  $value 参数值
     * @return bool
     */
    static function phone($value)
    {
        $result = false;
        if(!self::required($value)) return false;
        $exp = "/(^1[3|4|5|7|8][0-9]{9}$)/";
        if(preg_match($exp,$value))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 邮箱验证
     * @param  $value 参数值
     * @return bool
     */
    static function email($value)
    {
        $result = false;
        if(!self::required($value)) return false;
        $exp = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
        if(preg_match($exp,$value))
        {
            $result = true;
        }
        return $result;
    }

    /**
     * 验证中文
     * @param $value 参数值
     */
    static function chinese($value,$charset)
    {
        $result = false;
        if(strtolower($charset) == 'gb2312')
        {
            $exp = "/^[".chr(0xa1)."-".chr(0xff)."]+$/";
        }else{
            $exp = "/^[x{4e00}-x{9fa5}]+$/u";
        }
        if(preg_match($exp,$value))
        {
            $result = true;
        }
        return $result;
    }
}

 

转载于:https://my.oschina.net/u/2529258/blog/682795

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值