php批量驗證類
阿新 • • 發佈:2018-04-25
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批量驗證類