PHP语言 一个好用的参数验证类
小标 2018-07-12 来源 : 阅读 8 评论 0

摘要:本文主要向大家介绍了PHP语言 一个好用的参数验证类,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言 一个好用的参数验证类,通过具体的实例向大家展示,希望对大家学习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;

    }

}

以上就介绍了PHP的相关知识,希望对PHP有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言PHP频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
X
免费获取海同IT培训资料
验证码手机号,获得海同独家IT培训资料
获取验证码
提交

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号