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 include,include_once,require,require_once
Sep 05 PHP
PHP学习笔记 (1) 环境配置与代码调试
Jun 19 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
php日期转时间戳,指定日期转换成时间戳
Jul 17 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
php微信公众平台开发(三)订阅事件处理
Dec 06 PHP
PHP中模糊查询并关联三个select框
Jun 19 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 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学习之PHP变量
2006/10/09 PHP
新手学PHP之数据库操作详解及乱码解决!
2007/01/02 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python实现粒子群算法
2020/10/15 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
你所在的项目是如何确定版本号的
2015/12/28 面试题
小学校园活动策划
2014/01/30 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
2014年群众路线党员自我评议
2014/09/24 职场文书
临时用工协议书范本
2014/10/29 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
pandas中pd.groupby()的用法详解
2022/06/16 Python