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 相关文章推荐
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
php 判断是否是中文/英文/数字示例代码
Sep 30 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
Apr 18 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
yii2控制器Controller Ajax操作示例
Jul 23 PHP
php解决和避免form表单重复提交的几种方法
Aug 31 PHP
php 将json格式数据转换成数组的方法
Aug 21 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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
利用Memcached在php下实现session机制 替换PHP的原生session支持
2010/08/21 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
php中引用符号(&amp;)的使用详解
2013/11/13 PHP
php实现的简单检验登陆类
2015/06/18 PHP
PHP+Ajax无刷新带进度条图片上传示例
2017/02/08 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
解析JavaScript中的不可见数据类型
2013/12/02 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
2016/06/01 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
Python交互环境下实现输入代码
2018/06/22 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
使用django自带的user做外键的方法
2020/11/30 Python
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
超市周年庆活动方案
2014/08/16 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
邀请函的格式
2015/01/30 职场文书
交通安全月活动总结
2015/05/08 职场文书