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 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 PHP
Destoon模板制作简明教程
Jun 20 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
php封装的page分页类完整实例
Oct 18 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
浅谈PHP匿名函数和闭包
Mar 08 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 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中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
键盘KeyCode值列表汇总
2013/11/26 Javascript
解析Javascript小括号“()”的多义性
2013/12/03 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
vue数据控制视图源码解析
2018/03/28 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
浅谈微信页面入口文件被缓存解决方案
2018/09/29 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python一键升级所有pip package的方法
2017/01/16 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
Selenium 模拟浏览器动态加载页面的实现方法
2018/05/16 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
python 内置函数汇总详解
2019/09/16 Python
解决Python3下map函数的显示问题
2019/12/04 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
查看keras的默认backend实现方式
2020/06/19 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
问卷调查计划书
2014/01/10 职场文书
企业法人代表证明书
2014/09/27 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
HTML5来实现本地文件读取和写入的实现方法
2021/05/25 HTML / CSS
尝试使用Python爬取城市租房信息
2022/04/12 Python
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL