婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > php實現(xiàn)的表單驗證類完整示例

php實現(xiàn)的表單驗證類完整示例

熱門標(biāo)簽:江西手機自動外呼防封系統(tǒng)是什么 長春人工外呼系統(tǒng)服務(wù)商 怎么向銷售公司推銷外呼系統(tǒng) 廣州防封卡外呼系統(tǒng)多少錢一個月 高德地圖標(biāo)注家 外呼系統(tǒng)撥打暫時無法接通 廣東地市地圖標(biāo)注 哪里辦理400電話 仁和怎么申請400開頭的電話

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

?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]+$/', '正則驗證失敗哦']); //可以為二維數(shù)組,有|的正則驗證只能通過addRule。
 * $validator->validate($data);
 * $validator->getAllErrors(); //獲取所有驗證錯誤 array
 * $validator->getError(); //獲取第一條驗證錯誤 string
 * Validator::in('7,8,9', 8); //靜態(tài)調(diào)用
 * Validator::isEmail('375373223@qq.com');
 */
namespace Validate;
class Validator {
  //錯誤信息
  private $error = [];
  //傳入的驗證規(guī)則
  private $validate = [];
  //需要驗證的參數(shù)
  private $data = [];
  //添加的規(guī)則
  private $add_rules = [];
  //默認(rèn)錯誤提示
  private $error_msg = [
    'require' => ':attribute不能為空',
    'number' => ':attribute必須為數(shù)字',
    'array'  => ':attribute必須為數(shù)組',
    'float'  => ':attribute必須為浮點數(shù)',
    'boolean' => ':attribute必須為布爾值',
    'email'  => ':attribute必須為正確的郵件地址',
    'url'   => ':attribute必須為正確的url格式',
    'ip'   => ':attribute必須為正確的ip地址',
    'timestamp' => ':attribute必須為正確的時間戳格式',
    'date'  => ':attribute必須為正確的日期格式',
    'regex'  => ':attribute格式不正確',
    'in'   => ':attribute必須在:range內(nèi)',
    'notIn'  => ':attribute必須不在:range內(nèi)',
    'between' => ':attribute必須在:1-:2范圍內(nèi)',
    'notBetween' => ':attribute必須不在:1-:2范圍內(nèi)',
    '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 [需要驗證的參數(shù)]
   * @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 [驗證規(guī)則]
   * @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     [驗證規(guī)則]
   * @param [type] $validate_data [需要驗證的數(shù)據(jù)]
   * @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 添加規(guī)則格式 []]
   * @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 添加新的規(guī)則的驗證]
   * @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 [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @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 [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @return [type]    [boolean]
 */
 public static function notIn($rule, $data) {
    return !$this->in($data, $rule);
 }
  /**
 * [in description]
 * @param [type] $rule [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @return [type]    [boolean]
 */
 public static function between($rule, $data) {
 $rule = explode(',', $rule);
    return $data >= $rule[0]  $data = $rule[1];
 }
  /**
 * [in description]
 * @param [type] $rule [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @return [type]    [boolean]
 */
 public static function notBetween($rule, $data) {
 return !$this->between($rule, $data);
 }
  /**
 * [in description]
 * @param [type] $rule [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @return [type]    [boolean]
 */
 public static function max($rule, $data) {
 return $data = $rule;
 }
  /**
 * [in description]
 * @param [type] $rule [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @return [type]    [boolean]
 */
 public static function min($rule, $data) {
 return $data >= $rule;
 }
  /**
 * [in description]
 * @param [type] $rule [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @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 [驗證規(guī)則]
 * @param [type] $data [需要驗證的數(shù)據(jù)]
 * @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 調(diào)用自定義函數(shù)或者]
   * @param [type] $func [驗證規(guī)則,函數(shù)名]
   * @param [type] $data [驗證數(shù)據(jù)]
   * @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 靜態(tài)方法調(diào)用自定義函數(shù)或者]
   * @param [type] $func [驗證規(guī)則,函數(shù)名]
   * @param [type] $data [驗證數(shù)據(jù)]
   * @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]]);
 } 
  }
}

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php程序設(shè)計安全教程》、《php安全過濾技巧總結(jié)》、《PHP基本語法入門教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

您可能感興趣的文章:
  • php封裝的表單驗證類完整實例
  • php常用表單驗證類用法實例
  • php 表單驗證實現(xiàn)代碼
  • php用戶注冊頁面利用js進行表單驗證具體實例
  • 基于PHP+Ajax實現(xiàn)表單驗證的詳解
  • php下常用表單驗證的正則表達(dá)式
  • PHP表單驗證內(nèi)容是否為空的實現(xiàn)代碼
  • PHP Yii框架之表單驗證規(guī)則大全
  • PHP開發(fā)中常用的三個表單驗證函數(shù)使用小結(jié)
  • ThinkPHP框架表單驗證操作方法
  • PHP實現(xiàn)的用戶注冊表單驗證功能簡單示例

標(biāo)簽:湘西 梅河口 廈門 黔東 文山 海北 惠州 濮陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實現(xiàn)的表單驗證類完整示例》,本文關(guān)鍵詞  php,實現(xiàn),的,表單,驗證,類,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實現(xiàn)的表單驗證類完整示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于php實現(xiàn)的表單驗證類完整示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    美国毛片一区二区三区| 欧美日韩在线观看一区二区| 色8久久精品久久久久久蜜| 欧美日韩精品高清| 欧美国产精品久久| 奇米色一区二区| 色呦呦国产精品| 豆国产96在线|亚洲| 五月婷婷另类国产| 狂野欧美性猛交blacked| 成人午夜激情在线| 日韩欧美的一区| 肉色丝袜一区二区| 色欧美片视频在线观看在线视频| 久久色成人在线| 日本欧美一区二区| 一本色道a无线码一区v| 欧美国产日韩在线观看| 久久99精品一区二区三区| 欧美精品777| 午夜国产精品影院在线观看| 在线国产亚洲欧美| 亚洲色图在线播放| 99在线热播精品免费| 国产视频一区在线播放| 国内精品伊人久久久久av一坑 | 国产免费久久精品| 久久激情五月激情| 日韩欧美国产综合| 日韩精品一级中文字幕精品视频免费观看| 91网站最新网址| 亚洲少妇屁股交4| 91网站最新地址| 亚洲午夜在线视频| 在线观看欧美精品| 亚洲国产日产av| 欧美日韩国产精品自在自线| 亚洲国产精品久久艾草纯爱| 欧美日韩国产精品成人| 老色鬼精品视频在线观看播放| 日韩免费在线观看| 久久国产尿小便嘘嘘尿| 久久在线观看免费| 国产盗摄精品一区二区三区在线| 久久午夜羞羞影院免费观看| 国产成都精品91一区二区三| 亚洲欧美色图小说| 7799精品视频| 国产精品香蕉一区二区三区| 国产欧美精品一区二区三区四区 | 国产美女av一区二区三区| 26uuu精品一区二区在线观看| 国产在线播放一区| 综合精品久久久| 欧美私人免费视频| 蜜臀国产一区二区三区在线播放| 精品sm捆绑视频| 99精品热视频| 日本伊人色综合网| 欧美激情一区二区三区全黄| 欧美在线免费观看亚洲| 裸体在线国模精品偷拍| 国产午夜精品久久| 亚洲国产精品视频| 亚洲女人的天堂| 亚洲动漫第一页| 伊人色综合久久天天| 国内外成人在线视频| 99re成人精品视频| 4438x亚洲最大成人网| 国产亚洲欧美日韩日本| 美女被吸乳得到大胸91| 懂色av一区二区三区蜜臀| 91免费观看视频| 日韩精品一区二区在线观看| 亚洲黄色免费网站| 国产91在线观看| 欧美一级欧美三级在线观看| 日本亚洲最大的色成网站www| 激情小说欧美图片| 国产精品日日摸夜夜摸av| 中文字幕一区av| 国产69精品久久777的优势| 日本韩国一区二区| 97精品国产97久久久久久久久久久久| 不卡高清视频专区| 日韩一区二区三| 99久久精品费精品国产一区二区| 精品亚洲国内自在自线福利| 国产在线精品一区二区夜色| 久久综合色一综合色88| 欧美日韩国产大片| 色婷婷综合久色| 成人aa视频在线观看| 国内精品不卡在线| 久久精品国产亚洲高清剧情介绍| 亚洲国产成人va在线观看天堂| 国产蜜臀97一区二区三区| 日韩欧美高清一区| 欧美日韩dvd在线观看| 色综合av在线| 91久久奴性调教| 91麻豆精品一区二区三区| 成人性生交大合| 成人av网站免费| 波多野结衣一区二区三区 | 丝袜美腿亚洲一区| 伊人婷婷欧美激情| 蜜桃传媒麻豆第一区在线观看| 欧美日韩中文另类| 欧美亚洲动漫另类| 国产一区 二区| 亚洲国产经典视频| 欧美日韩另类国产亚洲欧美一级| 国产无遮挡一区二区三区毛片日本| 国产酒店精品激情| 亚洲综合一区二区| 日韩免费看的电影| 91精品福利视频| 国产69精品久久久久毛片| 高清不卡一二三区| 尤物在线观看一区| 国产人妖乱国产精品人妖| 国产成人av电影| 亚洲成年人影院| 国产精品久久久久久户外露出| 91精品在线免费观看| 日本韩国欧美国产| 国产在线精品一区二区三区不卡| 日韩精品一区二区在线观看| 午夜精品久久久久久久久久 | 亚洲欧洲综合另类在线| 国产激情视频一区二区三区欧美 | 亚洲图片一区二区| 久久精品日产第一区二区三区高清版| 欧美伊人久久大香线蕉综合69 | 国产精品护士白丝一区av| 欧美在线短视频| youjizz国产精品| 91小视频免费观看| 日韩欧美国产1| 91在线国内视频| 色综合中文字幕国产 | 91国产视频在线观看| 56国语精品自产拍在线观看| 2020国产精品| 亚洲自拍偷拍九九九| 久久不见久久见免费视频1| 99久久er热在这里只有精品66| 777色狠狠一区二区三区| 久久免费美女视频| 亚洲在线观看免费视频| 国产一区二区在线免费观看| 日本福利一区二区| 久久久久久夜精品精品免费| 亚洲一区二区三区视频在线播放| 国产一区二区三区香蕉| 91在线国产观看| 亚洲精品一区二区三区影院| 亚洲第一狼人社区| 国产宾馆实践打屁股91| 在线不卡a资源高清| 国产精品国产自产拍在线| 免费日韩伦理电影| 精品视频一区二区不卡| 国产网红主播福利一区二区| 免费精品视频在线| 91官网在线观看| 国产精品家庭影院| 国产综合久久久久影院| 欧美妇女性影城| 亚洲一区二区欧美日韩| a级高清视频欧美日韩| 精品日韩99亚洲| 蜜臂av日日欢夜夜爽一区| 日本高清不卡aⅴ免费网站| 亚洲国产精品v| 国产精品99久久久| 日韩久久免费av| 日韩—二三区免费观看av| 欧美日韩精品一区二区三区 | 日产精品久久久久久久性色| 在线免费观看视频一区| 亚洲欧美日韩一区二区| av一区二区三区四区| 中文字幕精品一区| 国产精品69毛片高清亚洲| 日韩女优视频免费观看| 免费观看在线综合| 日韩一区二区电影在线| 舔着乳尖日韩一区| 欧美自拍偷拍一区| 一个色综合网站| 欧美怡红院视频| 日韩精品亚洲一区二区三区免费| 欧美婷婷六月丁香综合色| 亚洲午夜电影网| 9191成人精品久久| 丝袜美腿一区二区三区| 日韩午夜在线影院|