php各种验证类

<?php
/**
  * 验证类
  *
  */
class VerifyAction{
     /**
      * 是否为空值
      */  
     public static function isEmpty( $str ){
         $str = trim( $str );    
         return ! empty ( $str ) ? true : false;
     }
     /**
      * 数字验证
      * param:$flag : int是否是整数,float是否是浮点型
      */      
     public static function isNum( $str , $flag = 'float' ){
         if (!self::isEmpty( $str )) return false;
         if ( strtolower ( $flag ) == 'int' ){
             return ((string)(int) $str === (string) $str ) ? true : false;
         } else {
             return ((string)(float) $str === (string) $str ) ? true : false;
         }
    
     /**
      * 名称匹配,如用户名,目录名等
      * @param:string $str 要匹配的字符串
      * @param:$chinese 是否支持中文,默认支持,如果是匹配文件名,建议关闭此项(false)
      * @param:$charset 编码(默认utf-8,支持gb2312)
      */  
     public static function isName( $str , $chinese = true, $charset = 'utf-8' ){
         if (!self::isEmpty( $str )) return false;
         if ( $chinese ){
             $match = ( strtolower ( $charset ) == 'gb2312' ) ? "/^[" . chr (0xa1). "-" . chr (0xff). "A-Za-z0-9_-]+$/" : "/^[x{4e00}-x{9fa5}A-Za-z0-9_]+$/u" ;
         } else {
             $match = '/^[A-za-z0-9_-]+$/' ;
         }
         return preg_match( $match , $str ) ? true : false;
     }
     /**
      * 邮箱验证
      */      
     public static function isEmail( $str ){
         if (!self::isEmpty( $str )) return false;
         return preg_match( "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i" , $str ) ? true : false;
     }
     //手机号码验证
     public static function isMobile( $str ){
         $exp = "/^13[0-9]{1}[0-9]{8}$|15[012356789]{1}[0-9]{8}$|18[012356789]{1}[0-9]{8}$|14[57]{1}[0-9]$/" ;
         if (preg_match( $exp , $str )){
             return true;
         } else {
             return false;
         }
     }
     /**
      * URL验证,纯网址格式,不支持IP验证
      */      
     public static function isUrl( $str ){
         if (!self::isEmpty( $str )) return false;
         return preg_match( '#(http|https|ftp|ftps)://([w-]+.)+[w-]+(/[w-./?%&=]*)?#i' , $str ) ? true : false;
     }
     /**
      * 验证中文
      * @param:string $str 要匹配的字符串
      * @param:$charset 编码(默认utf-8,支持gb2312)
      */  
     public static function isChinese( $str , $charset = 'utf-8' ){
         if (!self::isEmpty( $str )) return false;
         $match = ( strtolower ( $charset ) == 'gb2312' ) ? "/^[" . chr (0xa1). "-" . chr (0xff). "]+$/"
         : "/^[x{4e00}-x{9fa5}]+$/u" ;
         return preg_match( $match , $str ) ? true : false;       
     }
     /**
      * UTF-8验证
      */      
     public static function isUtf8( $str ){
         if (!self::isEmpty( $str )) return false;
         return (preg_match( "/^([" . chr (228). "-" . chr (233). "]{1}[" . chr (128). "-" . chr (191). "]{1}[" . chr (128). "-" . chr (191). "]{1}){1}/" , $word )
         == true || preg_match( "/([" . chr (228). "-" . chr (233). "]{1}[" . chr (128). "-" . chr (191). "]{1}[" . chr (128). "-" . chr (191). "]{1}){1}$/" , $word )
         == true || preg_match( "/([" . chr (228). "-" . chr (233). "]{1}[" . chr (128). "-" . chr (191). "]{1}[" . chr (128). "-" . chr (191). "]{1}){2,}/" , $word )
         == true) ? true : false;
     }
     /**
      * 验证长度
      * @param: string $str
      * @param: int $type(方式,默认min <= $str <= max)
      * @param: int $min,最小值;$max,最大值;
      * @param: string $charset 字符
     */
     public static function length( $str , $type =3, $min =0, $max =0, $charset = 'utf-8' ){
         if (!self::isEmpty( $str )) return false;
         $len = mb_strlen( $str , $charset );
         switch ( $type ){
             case 1: //只匹配最小值
                 return ( $len >= $min ) ? true : false;
                 break ;
             case 2: //只匹配最大值
                 return ( $max >= $len ) ? true : false;
                 break ;
             default : //min <= $str <= max
                 return (( $min <= $len ) && ( $len <= $max )) ? true : false;
         }
     }
     /**
      * 验证密码
      * @param string $value
      * @param int $length
      * @return boolean
      */
     public static function isPWD( $value , $minLen =6, $maxLen =16){
         $match = '/^[\\~!@#$%^&*()-_=+|{}\[\],.?\/:;\'\"\d\w]{' . $minLen . ',' . $maxLen . '}$/' ;
         $v = trim( $value );
         if ( empty ( $v ))
             return false;
         return preg_match( $match , $v );
    
     /**
      * 验证用户名
      * @param string $value
      * @param int $length
      * @return boolean
      */
     public static function isNames( $value , $minLen =2, $maxLen =16, $charset = 'ALL' ){
         if ( empty ( $value ))
             return false;
         switch ( $charset ){
             case 'EN' : $match = '/^[_\w\d]{' . $minLen . ',' . $maxLen . '}$/iu' ;
                 break ;
             case 'CN' : $match = '/^[_\x{4e00}-\x{9fa5}\d]{' . $minLen . ',' . $maxLen . '}$/iu' ;
                 break ;
             default : $match = '/^[_\w\d\x{4e00}-\x{9fa5}]{' . $minLen . ',' . $maxLen . '}$/iu' ;
         }
         return preg_match( $match , $value );
    
     /**
      * 验证邮箱
      * @param string $value
      */  
     public static function checkZip( $str ){
         if ( strlen ( $str )!=6){
             return false;
         }
         if ( substr ( $str ,0,1)==0){
             return false;
         }
         return true;
    
     /**
      * 匹配日期
      * @param string $value
      */      
     public static function checkDate ( $str ){
         $dateArr = explode ( "-" , $str );
         if ( is_numeric ( $dateArr [0]) && is_numeric ( $dateArr [1]) && is_numeric ( $dateArr [2])) {
         if (( $dateArr [0] >= 1000 && $timeArr [0] <= 10000) && ( $dateArr [1] >= 0 && $dateArr [1] <= 12) && ( $dateArr [2] >= 0 && $dateArr [2] <= 31))
             return true;
         else
             return false;
         }
         return false;
     }
     /**
      * 匹配时间
      * @param string $value
      */      
     public static function checkTime( $str ){
         $timeArr = explode ( ":" , $str );
         if ( is_numeric ( $timeArr [0]) && is_numeric ( $timeArr [1]) && is_numeric ( $timeArr [2])) {
         if (( $timeArr [0] >= 0 && $timeArr [0] <= 23) && ( $timeArr [1] >= 0 && $timeArr [1] <= 59) && ( $timeArr [2] >= 0 && $timeArr [2] <= 59))
             return true;
         else
             return false;
         }
         return false;
    
}

转载于:https://www.cnblogs.com/tangchuanyang/p/3853771.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值