1. 程式人生 > >php批量驗證類

php批量驗證類

php批量驗證類

  • 代碼:
    <?php
    /**
    * 批量驗證類
    * @author [lee] <[<www.dollarphp.com>]>
    * 1、驗證是否為空
    * 2、驗證數據類型
    * 3、驗證長度是否達標
    * 4、驗證是否符合正則匹配
    */
    class validation{
    private $data;
    private $msg = array();
    public function __construct($main){
        foreach($main as $k=>$v){
            $this->data = $k;
            $bool = $v[0];
            $type = $v[1];
            $len_arr = $v[2];
            $preg = $v[3];
            $this->isEmpty($bool)->dataType($type)->dataLength($len_arr)->pregMath($preg);
        }
    }
    private function isEmpty($bool){
        $data = $this->data;
        if($bool){
            if(empty($data)){
                $msg = "‘{$data}‘不能為空";
                array_push($this->msg,$msg);
            }
        }
        return $this;
    }
    private function dataType($type){
        $data = $this->data;
        if($type==‘bool‘){
            if(!is_bool($data)){
                $msg = "‘{$data}‘不能為非布爾值";
                array_push($this->msg,$msg);
            }
        }elseif($type==‘string‘){
            if(!is_string($data)){
                $msg = "‘{$data}‘不能為非字符串值";
                array_push($this->msg,$msg);
            }
        }elseif($type==‘int‘){
            if(!is_int($data)){
                $msg = "‘{$data}‘不能為非整型值";
                array_push($this->msg,$msg);
            }
        }elseif($type==‘float‘){
            if(!is_float($data)){
                $msg = "‘{$data}‘不能為非浮點型值";
                array_push($this->msg,$msg);
            }
        }elseif($type==‘array‘){
            if(!is_array($data)){
                $msg = "‘{$data}‘不能為非數組值";
                array_push($this->msg,$msg);
            }
        }elseif($type==‘object‘){
            if(!is_object($data)){
                $msg = "‘{$data}‘不能為非對象值";
                array_push($this->msg,$msg);
            }
        }
        return $this;
    }
    private function dataLength($len_arr){
        $data = $this->data;
        $min = abs($len_arr[0]);
        $max = abs($len_arr[1]);
        $type = gettype($data);
        if($type==‘string‘){
            $len = strlen($data);
        }elseif($type==‘integer‘){
            $len = strlen($data);
        }elseif($type==‘double‘){
            $len0 = strlen($data);
            $len1 = explode(‘.‘,$len0);
            $len = $len1[1];
        }elseif($type==‘array‘){
            $len = count($data);
        }elseif($type==‘object‘){
            $data = (array)$data;
            $len = count($data);
        }
        if(!($len >= $min && $len <= $max)){
            $msg = "‘{$data}‘長度不能小於{$min},不能大於{$max}";
            array_push($this->msg,$msg);
        }
        return $this;
    }
    private function pregMath($preg){
        $data = $this->data;
        if(!empty($preg)){
            if(!preg_match($preg,$data)){
                $msg = "‘{$data}‘格式不匹配‘{$preg}‘";
                array_push($this->msg,$msg);
            }
        }
    }
    public function checkData(){
        $msg = $this->msg;
        return $msg;
    }
    }
    $data = array(
        ‘lee‘=>array(
                true,
                ‘string‘,
                array(5,20),
                ‘/^a.*/‘
            ),
        ‘hello‘=>array(
                false,
                ‘int‘,
                array(8,20),
                ‘/^a\s*/‘
            )
    );
    $validation = new validation($data);
    $ret = $validation->checkData();
    var_dump($ret);
  • 輸出:
    array(5) {
    [0]=>
    string(41) "‘lee‘長度不能小於5,不能大於20"
    [1]=>
    string(28) "‘lee‘格式不匹配‘/^a.*/‘"
    [2]=>
    string(28) "‘hello‘不能為非整型值"
    [3]=>
    string(43) "‘hello‘長度不能小於8,不能大於20"
    [4]=>
    string(31) "‘hello‘格式不匹配‘/^a\s*/‘"
    }
  • php批量驗證類