PHP实现的常规正则验证helper公共类完整实例
author:一佰互联 2019-04-26   click:207

本文实例讲述了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。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php正则表达式用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。