温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在PHP中使用验证类

发布时间:2021-05-18 17:03:58 来源:亿速云 阅读:181 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关如何在PHP中使用验证类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体如下:

<?php class Valid {  static protected $error;  static protected $error_tips = [   'tel' => '手机号格式有误',   'email' => '邮箱格式有误',   'max_len' => '参数长度不能超过最大长度',   'min_len' => '参数长度不能小于最小长度',   'required' => '缺少参数'  ];  // required|max_len,100|min_len,6  public function validate($field, $rules)  {   $rules = explode('|', $rules);   foreach ($rules as $rule) {    $method = null;    $param = null;    // Check if we have rule parameters    if (strstr($rule, ',') !== false) {     $rule = explode(',', $rule);     $method = 'check_'.$rule[0];     $param = $rule[1];     $rule = $rule[0];    } else {     $method = 'check_'.$rule;    }    $method_array = get_class_methods(new Valid());    if (!in_array($method,$method_array)) {     self::$error[] = "Method not exist.";    }    if (!self::$method($field,$param)) {     self::$error[] = self::$error_tips[$rule] ? self::$error_tips[$rule] : '参数格式有误';    }   }   if (count(self::$error) == 0) {    return 0;   }   return self::$error[0]; // 返回第一个错误  }  public static function check_required($field) {   if (isset($field) && ($field === false || $field === 0 || $field === 0.0 || $field === '0' || !empty($field))) {    return true;   } else {    return false;   }  }  public static function check_tel($field) {   if(preg_match("/^1[345678]{1}\d{9}$/",$field)){    return true;   }else{    return false;   }  }  public static function check_email($field) {   if(preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$field)){    return true;   }else{    return false;   }  }  public static function check_max_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_min_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_regex($field, $param = null)  {   $regex = $param;   if (preg_match($regex, $field)) {    return true;   } else {    return false;   }  } }

基本满足需求。

vendor('Func.Valid'); if ($res = Valid::validate('152','required|regex,/^1[345678]{1}\d{9}$/')) {  $this->json->setErr(10001,$res);  $this->json->Send(); }

封装很有意思,这个类唯一的亮点,就是可以复合验证。并且支持正则。而且里面的验证方法还可以单独使用。

vendor('Func.Valid'); if (!Valid::check_tel('152')) {  $this->json->setErr(10001,'手机号有误');  $this->json->Send(); }

勇敢的封装,利国利民。

继续封装,支持数组传参。

<?php /**  * Created by PhpStorm.  * User: jiqing  * Date: 18-7-24  * Time: 下午4:36  * 常用验证  */ class Valid {  static protected $error;  static protected $error_tips = [   'tel' => '手机号格式有误',   'email' => '邮箱格式有误',   'max_len' => '参数长度不能超过最大长度',   'min_len' => '参数长度不能小于最小长度',   'required' => '缺少参数'  ];  /**   * @param $validators array array('email' => 'required|valid_email')   * @param $input array post数据   * @return string   */  public function is_valid($validators, $input) {   foreach ($validators as $field => $rules) {    if (!isset($input[$field]) || empty($input[$field])) {     self::$error[] = "缺少参数";    }    $rules = explode('|', $rules);    foreach ($rules as $rule) {     $method = null;     $param = null;     // Check if we have rule parameters     if (strstr($rule, ',') !== false) {      $rule = explode(',', $rule);      $method = 'check_'.$rule[0];      $param = $rule[1];      $rule = $rule[0];     } else {      $method = 'check_'.$rule;     }     $method_array = get_class_methods(new Valid());     if (!in_array($method,$method_array)) {      self::$error[] = "Method not exist.";     }     if (!self::$method($input[$field],$param)) {      self::$error[] = self::$error_tips[$rule] ? self::$error_tips[$rule] : '参数格式有误';     }    }   }   if (count(self::$error) == 0) {    return 0;   }   return self::$error[0]; // 返回第一个错误  }  /**   * @param $field string 验证字段   * @param $rules string 验证规则 required|max_len,100|min_len,6   * @return string   */  public function validate($field, $rules)  {   $rules = explode('|', $rules);   foreach ($rules as $rule) {    $method = null;    $param = null;    // Check if we have rule parameters    if (strstr($rule, ',') !== false) {     $rule = explode(',', $rule);     $method = 'check_'.$rule[0];     $param = $rule[1];     $rule = $rule[0];    } else {     $method = 'check_'.$rule;    }    $method_array = get_class_methods(new Valid());    if (!in_array($method,$method_array)) {     self::$error[] = "Method not exist.";    }    if (!self::$method($field,$param)) {     self::$error[] = self::$error_tips[$rule] ? self::$error_tips[$rule] : '参数格式有误';    }   }   if (count(self::$error) == 0) {    return 0;   }   return self::$error[0]; // 返回第一个错误  }  public static function check_required($field) {   if (isset($field) && ($field === false || $field === 0 || $field === 0.0 || $field === '0' || !empty($field))) {    return true;   } else {    return false;   }  }  /**   * 简写   * @param $field   * @return bool   */  public static function check_r($field) {   if (isset($field) && ($field === false || $field === 0 || $field === 0.0 || $field === '0' || !empty($field))) {    return true;   } else {    return false;   }  }  public static function check_tel($field) {   if(preg_match("/^1[345678]{1}\d{9}$/",$field)){    return true;   }else{    return false;   }  }  public static function check_email($field) {   if(preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$field)){    return true;   }else{    return false;   }  }  public static function check_max_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_min_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_regex($field, $param = null)  {   $regex = $param;   if (preg_match($regex, $field)) {    return true;   } else {    return false;   }  } }

使用如下

vendor('Func.Valid'); $validators = [  'tel' => 'required|tel',  'name' => 'required',  'email' => 'r|email',  'password' => 'r|min_len,6|max_len,12' ]; if ($err = Valid::is_valid($validators,$_POST)) {  $this->json->setErr(10001,$err);  $this->json->Send(); }

如何在PHP中使用验证类

继续优化!支持错误提示中,添加参数。

<?php /**  * Created by PhpStorm.  * User: jiqing  * Date: 18-7-24  * Time: 下午4:36  * 常用验证  */ class Valid {  static protected $error;  /**   * @param $validators array array('email' => 'required|valid_email')   * @param $input array post数据   * @return string   */  public function is_valid($validators, $input) {   foreach ($validators as $field => $rules) {    if (!isset($input[$field]) || empty($input[$field])) {     self::$error[] = "缺少参数";    }    $rules = explode('|', $rules);    foreach ($rules as $rule) {     $method = null;     $param = null;     // Check if we have rule parameters     if (strstr($rule, ',') !== false) {      $rule = explode(',', $rule);      $method = 'check_'.$rule[0];      $param = $rule[1];      $rule = $rule[0];     } else {      $method = 'check_'.$rule;     }     $method_array = get_class_methods(new Valid());     if (!in_array($method,$method_array)) {      self::$error[] = "Method not exist.";     }     if (!self::$method($input[$field],$param)) {      self::$error[] = self::get_error_tips($rule,$param);     }    }   }   if (count(self::$error) == 0) {    return 0;   }   return self::$error[0]; // 返回第一个错误  }  /**   * @param $field string 验证字段   * @param $rules string 验证规则 required|max_len,100|min_len,6   * @return string   */  public function validate($field, $rules)  {   $rules = explode('|', $rules);   foreach ($rules as $rule) {    $method = null;    $param = null;    // Check if we have rule parameters    if (strstr($rule, ',') !== false) {     $rule = explode(',', $rule);     $method = 'check_'.$rule[0];     $param = $rule[1];     $rule = $rule[0];    } else {     $method = 'check_'.$rule;    }    $method_array = get_class_methods(new Valid());    if (!in_array($method,$method_array)) {     self::$error[] = "Method not exist.";    }    if (!self::$method($field,$param)) {     self::$error[] = self::get_error_tips($rule,$param);    }   }   if (count(self::$error) == 0) {    return 0;   }   return self::$error[0]; // 返回第一个错误  }  /**   * 灵活获取参数   * @param $rule   * @param $param   */  public static function get_error_tips($rule,$param) {   $error_tips = [    'tel' => '手机号格式有误',    'email' => '邮箱格式有误',    'max_len' => '参数长度不能超过最大长度'.$param,    'min_len' => '参数长度不能小于最小长度'.$param,    'required' => '缺少参数',    'r' => '缺少参数'   ];   return $error_tips[$rule] ? $error_tips[$rule] : '参数格式有误';  }  public static function check_required($field) {   if (isset($field) && ($field === false || $field === 0 || $field === 0.0 || $field === '0' || !empty($field))) {    return true;   } else {    return false;   }  }  /**   * 简写   * @param $field   * @return bool   */  public static function check_r($field) {   if (isset($field) && ($field === false || $field === 0 || $field === 0.0 || $field === '0' || !empty($field))) {    return true;   } else {    return false;   }  }  public static function check_tel($field) {   if(preg_match("/^1[345678]{1}\d{9}$/",$field)){    return true;   }else{    return false;   }  }  public static function check_email($field) {   if(preg_match("/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/",$field)){    return true;   }else{    return false;   }  }  public static function check_max_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) <= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_min_len($field,$param = null) {   if (function_exists('mb_strlen')) {    if (mb_strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   } else {    if (strlen($field) >= (int) $param) {     return true;    } else {     return false;    }   }  }  public static function check_regex($field, $param = null)  {   $regex = $param;   if (preg_match($regex, $field)) {    return true;   } else {    return false;   }  } }

如何在PHP中使用验证类

php是什么语言

php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

关于如何在PHP中使用验证类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI