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来处理多个提交任务
Oct 09 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
初识laravel5
Mar 02 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
PHP基于GD库的图像处理方法小结
Sep 27 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 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
Ajax PHP分页演示
2007/01/02 PHP
PHP 文件上传限制问题
2019/09/01 PHP
php判断数组是否为空的实例方法
2020/05/10 PHP
模仿百度三维地图的js数据分享
2011/05/12 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
Js数组的操作push,pop,shift,unshift等方法详细介绍
2012/12/28 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
JS监听事件的叠加和移除功能
2018/11/19 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
调解员先进事迹材料
2014/02/07 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
向国旗敬礼活动总结范文2014
2014/09/27 职场文书
继承权公证书范本
2015/01/23 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
少先队中队工作总结2015
2015/07/23 职场文书