PHP实现的常规正则验证helper公共类完整实例


Posted in PHP onApril 27, 2017

本文实例讲述了PHP实现的常规正则验证helper公共类。分享给大家供大家参考,具体如下:

主要代码功能: 弥补平时项目对于验证功能这块的不严谨。具体细分的常规验证, 手机号/电话/小灵通验证, 字符串长度区间合法验证, 邮箱验证, 使用正则验证数据.

/**
 *
 *
 * 常规验证helper公共类
 *
 *
 */
class CheckForm
{
  //手机号/电话/小灵通 验证
  public function Mobile_check($mobile,$type = array())
  {
    /**
    * 手机号码
    * 移动:134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
    * 联通:130,131,132,152,155,156,185,186
    * 电信:133,1349,153,180,189
    */
    $res[1]= preg_match('/^1(3[0-9]|5[0-35-9]|8[0-9])\\d{8}$/', $mobile);
    /**
    * 中国移动:China Mobile
    11   * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
    */
    $res[2]= preg_match('/^1(34[0-8]|(3[5-9]|5[017-9]|8[0-9])\\d)\\d{7}$/', $mobile);
    /**
    * 中国联通:China Unicom
    * 130,131,132,152,155,156,185,186
    */
    $res[3]= preg_match('/^1(3[0-2]|5[256]|8[56])\\d{8}$/', $mobile);
    /**
    * 中国电信:China Telecom
    * 133,1349,153,180,189
    */
    $res[4]= preg_match('/^1((33|53|8[09])[0-9]|349)\\d{7}$/', $mobile);
    /**
    * 大陆地区固话及小灵通
    * 区号:010,020,021,022,023,024,025,027,028,029
    * 号码:七位或八位
    */
    $res[5]= preg_match('/^0(10|2[0-5789]|\\d{3})-\\d{7,8}$/', $mobile);
    $type = empty($type) ? array(1,2,3,4,5) : $type;
    $ok = false;
    foreach ($type as $key=>$val)
    {
      if ($res[$val])
      {
        $ok = true;
      }
      continue;
    }
    if ( $mobile && $ok )
    {
      return true;
    } else{
      return false;
    }
  }
  //字符串长度区间合法验证
  public function Strlength_check($str, $min=NULL, $max=NULL)
  {
    preg_match_all("/./u", $str, $matches);
    $len = count($matches[0]);
    if(is_null($min) && !empty($max) && $len < $max){
      return false;
    }
    if(is_null($max) && !empty($min) && $len > $min){
      return false;
    }
    if ($len < $min || $len > $max) {
      return false;
    }
    return true;
  }
  //邮箱验证
  public static function isEmail($str)
  {
    if (!$str) {
      return false;
    }
    return preg_match('#[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+#is', $str) ? true : false;
  }
  /**
  * 使用正则验证数据
  * @access public
  * @param string $rule 验证规则
  * @param string $value 要验证的数据
  * @return boolean
  */
  public function regex($rule,$value) {
    $validate = array(
    //字段必须,不能为空
    'require' => '/\S+/',
    //邮箱验证
    'email'  => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',
    //url验证
    'url'  => '/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/',
    //货币验证
    'currency' => '/^\d+(\.\d{0,2})?$/',
    //数字验证
    'number' => '/^[-\+]?\d+(\.\d+)?$/',
    //zip验证
    'zip'  => '/^\d{6}$/',
    //整数验证
    'integer' => '/^[-\+]?\d+$/',
    //浮点数验证
    'double' => '/^[-\+]?\d+(\.\d+)?$/',
    //英文验证
    'english' => '/^[A-Za-z]+$/',
    'gt0' => '/^(?!(0[0-9]{0,}$))[0-9]{1,}[.]{0,}[0-9]{0,}$/',
    //合法帐号
    'account' => '/^[a-zA-Z][a-zA-Z0-9_]{1,19}$/'
    );
    // 检查是否有内置的正则表达式
    if(isset($validate[strtolower($rule)]))
    $rule = $validate[strtolower($rule)];
    return preg_match($rule,$value)===1;
  }
  function CheckPwd($pwd,$min=NULL, $max=NULL)
  {
  if (strlen($pwd)>$max || strlen($pwd)<$min || preg_match("/^\d*$/",$pwd) || preg_match("/^[a-z]*$/i",$pwd))
  {
    return false;
  }
  return true;
  }
}

is_null() 检测变量是否为 NULL。

PHP 相关文章推荐
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP常用的缓存技术汇总
May 05 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 PHP
浅谈htmlentities 、htmlspecialchars、addslashes的使用方法
Dec 09 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
PHP标准库 (SPL)――Countable用法示例
Jun 05 PHP
PHP设计模式(观察者模式)
Jul 07 PHP
php上传excel表格并获取数据
Apr 27 #PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 #PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 #PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 #PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 #PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 #PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 #PHP
You might like
生成静态页面的PHP类
2006/11/25 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
Python中for循环和while循环的基本使用方法
2015/08/21 Python
pandas多级分组实现排序的方法
2018/04/20 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
浅析python标准库中的glob
2020/03/13 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
python使用建议技巧分享(三)
2020/08/18 Python
澳大利亚领先的在线葡萄酒零售商:Get Wines Direct
2018/03/27 全球购物
班级安全教育实施方案
2014/02/23 职场文书
教学改革实施方案
2014/03/31 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
幼儿园小班家长评语
2014/12/30 职场文书
档案接收函格式
2015/01/30 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
医者仁心观后感
2015/06/17 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
MySQL中order by的使用详情
2021/11/17 MySQL