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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
PHP日期处理函数 整型日期格式
Jan 12 PHP
php去除重复字的实现代码
Sep 16 PHP
PHP生成随机密码类分享
Jun 25 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
PHP中的traits简单使用实例
May 13 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php制作简单模版引擎
Apr 07 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
May 21 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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 sprintf()函数用例解析
2011/05/18 PHP
PHP之数组学习
2011/05/29 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
一个简易的js图片轮播效果
2017/07/22 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python opencv进行图像拼接
2020/03/27 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
植树造林的宣传标语
2014/06/23 职场文书
大学迎新生标语
2014/10/06 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
2015团员个人年度总结
2015/11/24 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
基于Redis过期事件实现订单超时取消
2021/05/08 Redis