class yanzhenglei{

/**
     * 检查日期格式    
     * @param string $str 日期格式2015-01-01
     * @return bool
     */    
    public static function is_date($str){
        if(!self::is_empty($str)) return false; 
        $arg = explode("-",$str);
        return checkdate ($arg[1] ,(int)$arg[2], $arg[0]);
    }
    
    
    /**
     * 检查IP    
     * @param string $str IP地址0.0.0.0
     * @return bool
     */    
    public static function is_ip($str){
        if(!self::is_empty($str)) return false; 
        return ip2long($str) ? TRUE : FALSE;
    }
    
    
    /**
     * 检查手机    
     * @param string $str 手机号码
     * @return bool
     */        
    public static function is_mobile($str){
        if(!self::is_empty($str)) return false;
        $exp = "/^13[0-9]{1}[0-9]{8}$|15[012356789]{1}[0-9]{8}$|177[0-9]{8}$|18[012356789]{1}[0-9]{8}$|14[57]{1}[0-9]$/";
        return preg_match($exp,$str) ? TRUE : FALSE;
    }

/**
     * 检查用户名    
     * @param string $str    用户名
     * @return bool
     */    
    
    public static function is_username($str){
        if(!self::is_empty($str)) return false;
        return preg_match("/^[A-Z0-9a-z@\.-_]{6,20}$/",$str) ? TRUE : FALSE; 
    }

/**
     * 检查Email    
     * @param string $str Email地址
     * @return bool
     */    
    
    public static function is_email($str){
        if(!self::is_empty($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; 
    }
    
    /**
     * 检查密码字符
     * @param string $str 密码字符
     * @return bool
     */    
    
    public static function is_password($str , $min = 6, $max = 20){
        if(!self::is_empty($str)) return false;
        return preg_match("/^[\\~!@#$%^&*()-_=+|{},.?\/:;\'\"\d\w]{".$min.",".$max."}$/",$str) ? TRUE : FALSE; 
    }

/**
     * 检查简单密码
     * @param string $str 密码字符
     * @return bool
     */        
    public static function is_complex_password($str , $min = 6, $max = 20){
        if(!self::is_password($str,$min,$max)) return false;
        if(strpos("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",$str)) return false;
        if(preg_replace("/[\d\w](?=[\d\w])/","\\1", $str) == substr ($str,0,1) ) return false ;
        return true;
        //待补充
    }    
    
    /**
     * 检查整数(含长度)
     * @param int $val 数字
     * @param int $min 最小长度默认1
     * @param int $max 最大长度默认20
     * @return bool
     */    
    public static function is_int($val, $min = 1, $max = 20) {
        return preg_match("/^[0-9]{" . $min . "," . $max . "}$/", $val)? TRUE : FALSE;
    }
    
    /**
     * 检查货币形式
     * @param number $val 数字
     * @return bool
     */    
    public static function is_money($val) {
        if( preg_match("/^[0-9]{1,}$/", $val) ){return TRUE;}
        return preg_match("/^[0-9]{1,}\.[0-9]{1,2}$/", $val)? TRUE : FALSE;
    }
    
    
    /**
     * 检查身份证号
     * @param string $str 身份证号码
     * @return bool
     */    
    public static function is_idcard($str)
    {
        $vCity = array(
            '11','12','13','14','15','21','22',
            '23','31','32','33','34','35','36',
            '37','41','42','43','44','45','46',
            '50','51','52','53','54','61','62',
            '63','64','65','71','81','82','91'
        );
     
        if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $str)) return false;
     
        if (!in_array(substr($str, 0, 2), $vCity)) return false;
     
        $str = preg_replace('/[xX]$/i', 'a', $str);
        $vLength = strlen($str);
     
        if ($vLength == 18)
        {
            $vBirthday = substr($str, 6, 4) . '-' . substr($str, 10, 2) . '-' . substr($str, 12, 2);
        } else {
            $vBirthday = '19' . substr($str, 6, 2) . '-' . substr($str, 8, 2) . '-' . substr($str, 10, 2);
        }
     
        if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return FALSE;
        if ($vLength == 18)
        {
            $vSum = 0;
     
            for ($i = 17 ; $i >= 0 ; $i--)
            {
                $vSubStr = substr($str, 17 - $i, 1);
                $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
            }
     
            if($vSum % 11 != 1) return FALSE;
        }
     
        return true;
    }

/**
     * 检查是否为空    
     * @param string $str 任意待校验的字符串
     * @return bool
     */    
    public static function is_empty($str){  
        $str = trim($str);      
        return !empty($str) ? TRUE : FALSE;  
    }  
    
    /**
     * 检查是否为允许的图片格式JPG PNG GIF
     * @param string $filename 图片文件路径和文件名
     * @return bool
     */    
    public static function is_allow_image($filename){  
        if(!self::is_empty($filename)) return false;
        if(!exif_imagetype($filename)) return false;
        if(!strpos("123",exif_imagetype($filename)) ){return false;}
        return true;
    }      
    
    /**
     * 检查是否为允许的内容格式
     * @param string $str 正文
     * @return bool
     */
    public static function is_trash_content($str){
        return true;
    }
    
}

PHP验证的更多相关文章

  1. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  2. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  3. Yii1.1的验证规则

    在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...

  4. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

  5. PHP验证用户登录例子-学习笔记

    1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...

  6. 客户端的验证插件validator

    简单,智能,令人愉悦的表单验证~~~ 官方文档:http://www.niceue.com/validator/ <!DOCTYPE html> <html> <head ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)

    系列目录 前言: 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手. 继续上一篇的文章,我们接下来演示利用拿到的Token来访 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)

    系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...

  9. 再谈C#采集,一个绕过高强度安全验证的采集方案?方案很Low,慎入

    说起采集,其实我是个外行,以前拔过阿里巴巴的客户数据,在我博客的文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子) 中,介绍过采集用的工具,其实很Low的,分析 ...

  10. jQuery学习之路(8)- 表单验证插件-Validation

    ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...

随机推荐

  1. miniFTP项目实战三

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

  2. NOIP 模拟 $38\; \rm b$

    题解 \(by\;zj\varphi\) 考虑转化问题,将计算最大公约数换为枚举最大公约数. 设 \(sum_i\) 为最大公约数为 \(i\) 的方案数,可以容斥求解,\(sum_i=f_i-\su ...

  3. 题解 y

    传送门 考场上写的记忆化不够快--和暴力一个分 如果题面里有提到类似「从点1出发」的字样,特别注意点1根本就没有连边的情况 这题写记忆化的时候是想搜出所有可能的组合, 那么对于一个点u,剩余深度为d时 ...

  4. elasticsearch可视化工具-dejavu

    https://github.com/appbaseio/dejavu docker run -p 1358:1358 -d appbaseio/dejavu http.port: 9200 http ...

  5. jenkins+docker部署java项目

    jenkins + maven + jdk + docker + docker register + dockerfile jenkins插件 # 安装插件 SSH # 配置 系统设置-> SS ...

  6. SpringBoot获取请求的参数

    说明 SpringBoot 为我们封装了许多,简便的获取请求参数的方法! 1.获取无注解获取请求参数 请求地址:http://192.168.0.115:8080/myproject/test/noA ...

  7. .Net 生成带注释的Nuget包

    使用.NET Core时,我们的类库都要打包成nuget包上传到nuget服务器,以供自己或他人使用 .Net sdk提供了一个 .Net pack 命令可以生成nuget包.比如下面的命令 dotn ...

  8. WPF---数据绑定之Xml数据源(四)

    一.场景 现在外部有一xml文件,我们想将该xml文件中的内容绑定到ListView中,该如何实现? 二.实现 xml文件的内容如下: <?xml version="1.0" ...

  9. 百闻不如一试——公式图片转Latex代码

    写博客时,数学公式的编辑比较占用时间,在上一篇中详细介绍了如何在Markdown中编辑数学符号与公式. https://www.cnblogs.com/bytesfly/p/markdown-form ...

  10. Nginx的高级使用

    1.概述 之前介绍过Nginx的简单使用,今天来聊聊Nginx的一些高级使用. 2.使用Nginx解决跨域问题 当公司存在多个域名时,两个不同的域名相互访问就会存在跨域问题. 或者在进行前端开发时,通 ...