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 相关文章推荐
apache rewrite_module模块使用教程
Jan 10 PHP
php 删除记录实现代码
Mar 12 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 PHP
详解laravel passport OAuth2.0的4种模式
Nov 04 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP8.0新功能之Match表达式的使用
Jul 19 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 高效率写法 推荐
2010/02/21 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
php简单截取字符串代码示例
2016/10/19 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
使用Javascript接收get传递的值的代码
2011/11/30 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
python对execl 处理操作代码
2020/06/22 Python
Python 在函数上添加包装器
2020/07/28 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
医学生自我评价
2014/01/27 职场文书
民生工程实施方案
2014/03/22 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript