亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php實現的表單驗證類完整示例

2024-05-05 00:10:53
字體:
來源:轉載
供稿:網友

本文實例講述了php實現的表單驗證類。分享給大家供大家參考,具體如下:

<?php/** * 用法 * use Validate/Validator; *  * $rules = [  *    ['name|名字', 'require|email|in:7,8,9|max:10|min:6|between:6,8|length:2', '名字不能為空|名字必須必須為正確的郵件地址'], *    ['test|測試', 'require'], *  ]; * $data = ['name' => '8gAg:']; * $validator = new Validator($rules); * $validator->addRule(['name|名字', 'regex', '/^[0-8|a-z]+$/', '正則驗證失敗哦']); //可以為二維數組,有|的正則驗證只能通過addRule。 * $validator->validate($data); * $validator->getAllErrors(); //獲取所有驗證錯誤 array * $validator->getError(); //獲取第一條驗證錯誤 string * Validator::in('7,8,9', 8); //靜態調用 * Validator::isEmail('375373223@qq.com'); */namespace Validate;class Validator {  //錯誤信息  private $error = [];  //傳入的驗證規則  private $validate = [];  //需要驗證的參數  private $data = [];  //添加的規則  private $add_rules = [];  //默認錯誤提示  private $error_msg = [    'require' => ':attribute不能為空',    'number' => ':attribute必須為數字',    'array'  => ':attribute必須為數組',    'float'  => ':attribute必須為浮點數',    'boolean' => ':attribute必須為布爾值',    'email'  => ':attribute必須為正確的郵件地址',    'url'   => ':attribute必須為正確的url格式',    'ip'   => ':attribute必須為正確的ip地址',    'timestamp' => ':attribute必須為正確的時間戳格式',    'date'  => ':attribute必須為正確的日期格式',    'regex'  => ':attribute格式不正確',    'in'   => ':attribute必須在:range內',    'notIn'  => ':attribute必須不在:range內',    'between' => ':attribute必須在:1-:2范圍內',    'notBetween' => ':attribute必須不在:1-:2范圍內',    'max'   => ':attribute最大值為:1',    'min'   => ':attribute最小值為:1',    'length' => ':attribute長度必須為:1',    'confirm' => ':attribute和:1不一致',    'gt'   => ':attribute必須大于:1',    'lt'   => ':attribute必須小于:1',    'egt'   => ':attribute必須大于等于:1',    'elt'   => ':attribute必須小于等于:1',    'eq'   => ':attribute必須等于:1',  ];  public function __construct($validate = null) {    $this->validate = $validate; }  /**   * [validate 驗證]   * @param [type] $data [需要驗證的參數]   * @return [type]    [boolean]   */ public function validate($data) { $this->data = $data;    foreach ($this->validate as $key => $item) {     $item_len = count($item);     $name = $item[0];     $rules = $item[1];     $rules = explode('|', $rules);     $message = $item_len > 2 ? explode('|', $item[2]) : null;      $this->check($name, $rules, $message);     }    if(!empty($this->add_rules)) {     $this->checkAddRules();    }    return empty($this->error) ? TRUE : FALSE; }  /**   * [check 單個字段驗證]   * @param [type] $name  [description]   * @param [type] $rules  [description]   * @param [type] $message [description]   * @return [type]     [null]   */ private function check($name, $rules, $message) { //$title = $name; $rule_name = $title = $name; if(strpos($name, '|')) {  $rule_name = explode('|', $name)[0];  $title = explode('|', $name)[1]; }    foreach ($rules as $i => $rule) {   $validate_data = isset($this->data[$rule_name]) ? $this->data[$rule_name] : null;          $result = $this->checkResult($rule, $validate_data);     if(!$result) {     $error_info = isset($message[$i]) ? $message[$i] : $this->getMessage($title, $rule);        if($error_info) {         array_push($this->error, $error_info);        }     }    } }  /**   * [getMessage 獲取驗證失敗的信息]   * @param [type] $name [字段名]   * @param [type] $rule [驗證規則]   * @return [type]    [string OR fail false]   */ private function getMessage($name, $rule) { $value1 = ''; $value2 = ''; $range = ''; $error_key = $rule;    if(strpos($rule, ':')) {     $exp_arr = explode(':', $rule);     $error_key = $exp_arr[0];     $range = $exp_arr[1];     $message_value = explode(',', $exp_arr[1]);     $value1 = isset($message_value[0]) ? $message_value[0] : '';     $value2 = isset($message_value[1]) ? $message_value[1] : '';    }    if(isset($this->error_msg[$error_key])) {     return str_replace([':attribute', ':range', ':1', ':2'], [$name, $range, $value1, $value2], $this->error_msg[$error_key]);    } return false; }  /**   * [checkResult 字段驗證]   * @param [type] $rule     [驗證規則]   * @param [type] $validate_data [需要驗證的數據]   * @return [type]        [boolean]   */ private function checkResult($rule, $validate_data) {    switch ($rule) {     case 'require':       return $validate_data != '';     break;     case 'number':       return filter_var($validate_data, FILTER_SANITIZE_NUMBER_INT);     break;     case 'array':       return is_array($validate_data);     break;     case 'float':       return filter_var($validate_data, FILTER_VALIDATE_FLOAT);     break;     case 'boolean':       return filter_var($validate_data, FILTER_VALIDATE_BOOLEAN);     break;     case 'email':       return filter_var($validate_data, FILTER_VALIDATE_EMAIL);     break;     case 'url':       return filter_var($validate_data, FILTER_SANITIZE_URL);     case 'ip':       return filter_var($validate_data, FILTER_VALIDATE_IP);     break;     case 'timestamp':       return strtotime(date('Y-m-d H:i:s',$validate_data)) == $validate_data;     break;     case 'date': //2017-11-17 12:12:12       return strtotime($validate_data);     break;     default:         if(strpos($rule, ':')) {         $rule_arr = explode(':', $rule);         $func_name = substr($rule, strpos($rule, ':')+1);         return call_user_func_array([$this, $rule_arr[0]], [$func_name, $validate_data]);        }else{        return call_user_func_array([$this, $rule], [$rule, $validate_data]);        }     break;    } }  /**   * [regex 正則驗證]   * @param [type] $rule [description]   * @param [type] $data [description]   * @return [type]    [description]   */ public static function regex($rule, $data) {    return filter_var($data, FILTER_VALIDATE_REGEXP, ["options" => ["regexp" => $rule]]); }  /**   * [addRule 添加規則格式 []]   * @param [type] $rule [description]   */ public function addRule($rule) { if(is_array(current($rule))) {  $this->add_rules = array_merge($this->add_rules, $rule); }else{  array_push($this->add_rules, $rule); } }  /**   * [checkAddRules 添加新的規則的驗證]   * @return [type] [description]   */ public function checkAddRules() { foreach ($this->add_rules as $key => $item) {  $name = $item[0];     $message = isset($item[3]) ? $item[3] : null;     $rule_name = $title = $name;  if(strpos($name, '|')) {  $rule_name = explode('|', $name)[0];  $title = explode('|', $name)[1];  }  $validate_data = isset($this->data[$rule_name]) ? $this->data[$rule_name] : null;           $result = $this->checkResult($item[1].':'.$item[2], $validate_data);     if(!$result) {     $error_info = isset($message) ? $message : $this->getMessage($title, $item[1]);       if($error_info) {         array_push($this->error, $error_info);       }     }  } } /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function in($rule, $data) { if(!is_array($rule)) {  $rule = explode(',', $rule); }    return in_array($data, $rule); }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function notIn($rule, $data) {    return !$this->in($data, $rule); }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function between($rule, $data) { $rule = explode(',', $rule);    return $data >= $rule[0] && $data <= $rule[1]; }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function notBetween($rule, $data) { return !$this->between($rule, $data); }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function max($rule, $data) { return $data <= $rule; }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function min($rule, $data) { return $data >= $rule; }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function length($rule, $data) { $length = is_array($data) ? count($data) : strlen($data); return $length == $rule; }  /** * [in description] * @param [type] $rule [驗證規則] * @param [type] $data [需要驗證的數據] * @return [type]    [boolean] */ public static function confirm($rule, $data) { return isset($this->data[$rule]) && $data == $this->data[$rule]; } public static function gt($rule, $data) { return $data > $rule; }  public static function lt($rule, $data) { return $data < $rule; } public static function egt($rule, $data) { return $data >= $rule; }  public static function elt($rule, $data) { return $data <= $rule; } public static function eq($rule, $data) { return $data == $rule; }  /** * [in 獲取驗證失敗的第一條信息] * @return [type] [string] */ public function getError() {    return count($this->error) > 0 ? $this->error[0] : null; }  /**   * [getAllErrors 獲取所有驗證失敗的信息]   * @return [type] [array]   */ public function getAllErrors() {    return $this->error; }  /**   * [__call 調用自定義函數或者]   * @param [type] $func [驗證規則,函數名]   * @param [type] $data [驗證數據]   * @return [type]    [boollean]   */ function __call($func, $data) { $func_arr = get_defined_functions(); if(in_array($func,$func_arr['user'])) {  return call_user_func($func, $data); }else{  array_push($this->error, '沒有' . $func . '這個方法'); }  }  /**   * [__callStatic 靜態方法調用自定義函數或者]   * @param [type] $func [驗證規則,函數名]   * @param [type] $data [驗證數據]   * @return [type]    [boollean]   */  public static function __callStatic($func, $data) {  if(substr($func, 0, 2) == 'is') {  return call_user_func_array([new self, 'checkResult'], [strtolower(substr($func, 2)), $data[0]]); }   }}

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美一区二区三区久久人妖| 国产亚洲美女精品久久久| 欧美在线播放视频| 国产精品欧美一区二区三区奶水| 欧美尤物巨大精品爽| 亚洲视频网站在线观看| 热re99久久精品国产66热| 日韩av资源在线播放| 国产精品激情av电影在线观看| 欧美肥婆姓交大片| 亚洲欧美激情一区| 国产精品免费一区豆花| 欧美黄色小视频| 亚洲天堂男人的天堂| 亚洲欧美精品suv| 国产精品久久久久aaaa九色| 中文字幕免费国产精品| 欧美高清激情视频| 在线看福利67194| 亚洲男人第一av网站| 国产99久久久欧美黑人| 久久男人资源视频| 日韩成人在线网站| 欧洲永久精品大片ww免费漫画| 91精品国产自产在线老师啪| 国产91成人video| 亚洲精品久久久久久下一站| 日本精品久久中文字幕佐佐木| 欧美另类69精品久久久久9999| 亚洲性无码av在线| 国产欧美韩国高清| 午夜精品久久久久久久久久久久久| 亚洲一区亚洲二区亚洲三区| 日韩国产欧美精品一区二区三区| 日韩精品视频在线观看网址| 2021国产精品视频| 欧美日韩国产激情| 欧美一区二区三区免费观看| 久久久av电影| 韩剧1988在线观看免费完整版| 日韩精品极品毛片系列视频| 在线播放日韩av| 亚洲成**性毛茸茸| 欧美性生交xxxxxdddd| 日韩精品高清视频| 欧美丰满少妇xxxx| 精品香蕉一区二区三区| 97精品国产97久久久久久| 尤物99国产成人精品视频| 国产成人在线一区| 97婷婷涩涩精品一区| 亚洲欧美资源在线| 亚洲视频一区二区三区| 国产精品美乳在线观看| 欧美自拍大量在线观看| 91免费电影网站| 亚洲欧美色婷婷| 怡红院精品视频| 亚洲国产91精品在线观看| 奇米4444一区二区三区| 欧美疯狂做受xxxx高潮| 国产精品自产拍在线观看中文| 美女999久久久精品视频| 中文字幕av一区二区三区谷原希美| 岛国av午夜精品| 国产精品视频网址| 亚洲摸下面视频| 国产精品女人久久久久久| 欧美资源在线观看| 国产日韩在线精品av| 欧美高跟鞋交xxxxxhd| 国产成人一区二区三区小说| 日韩精品极品视频免费观看| 亚洲国产三级网| 欧美成人午夜激情在线| 日韩av大片免费看| 精品久久久国产精品999| 欧美极品在线播放| 97精品一区二区视频在线观看| 日韩一区二区福利| 国产精品 欧美在线| 亚洲电影免费观看高清完整版| 亚洲成人亚洲激情| 日本中文字幕不卡免费| 精品国内产的精品视频在线观看| 亚州av一区二区| 91在线视频九色| 欧美日韩在线观看视频| 亚洲自拍偷拍色图| 91理论片午午论夜理片久久| 91精品国产91久久久久久吃药| 欧美小视频在线| 国产视频观看一区| 国产在线精品一区免费香蕉| 亚洲欧美第一页| 欧美性黄网官网| 亚洲天堂成人在线视频| 日本国产欧美一区二区三区| 夜夜嗨av色综合久久久综合网| 17婷婷久久www| 亚洲成人精品在线| 亚洲午夜激情免费视频| 亚洲国产美女久久久久| 国产成人精品免费久久久久| 亚洲福利在线观看| 中文字幕不卡在线视频极品| 日韩中文字幕av| 九九九久久国产免费| 久久亚洲精品毛片| 成人www视频在线观看| 午夜精品福利电影| 久久综合伊人77777尤物| 亚洲欧美激情精品一区二区| 国产区亚洲区欧美区| 精品久久中文字幕| 91热精品视频| 一区二区三区无码高清视频| 一区二区欧美日韩视频| 国产91精品视频在线观看| 亚洲最大成人免费视频| 91精品国产色综合久久不卡98口| 亚洲激情国产精品| 国产精品高潮呻吟久久av黑人| 色综合久久精品亚洲国产| 国产亚洲精品91在线| 狠狠久久五月精品中文字幕| 亚洲bt欧美bt日本bt| 成人福利视频在线观看| 88国产精品欧美一区二区三区| 91亚洲精品久久久| 亚洲欧美日韩中文在线制服| 久久69精品久久久久久国产越南| 一区二区在线免费视频| 国产在线观看一区二区三区| 国产女精品视频网站免费| 亚洲色图校园春色| 欧美在线亚洲一区| 日韩经典中文字幕| 国产欧美中文字幕| 国产精品高清免费在线观看| 日本精品一区二区三区在线播放视频| 国产精品亚洲欧美导航| 欧美成年人网站| 欧美视频第一页| 国产精品视频中文字幕91| 欧美亚洲国产精品| 中文字幕不卡在线视频极品| 亚洲综合中文字幕68页| 亚洲欧美日韩精品久久奇米色影视| 日韩亚洲精品视频| 欧美黄网免费在线观看| 91夜夜揉人人捏人人添红杏| 51ⅴ精品国产91久久久久久| 久久亚洲影音av资源网| 久久久久久久久久久久av| 国产成人精品久久二区二区| 国内精品视频久久| 91最新在线免费观看| 亚洲国产精品一区二区久| 中文字幕9999| 亚洲人成电影在线播放| 国产精品无码专区在线观看| 欧美国产日韩二区| 日韩av123|