PHP验证
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验证的更多相关文章
- 【探索】无形验证码 —— PoW 算力验证
先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...
- C# 中参数验证方式的演变
一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...
- Yii1.1的验证规则
在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...
- 【WCF】使用“用户名/密码”验证的合理方法
我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...
- PHP验证用户登录例子-学习笔记
1.基本流程: 2.UML类图: 3.PHP代码: 3.1 index.php <?php /** * Created by PhpStorm. * User: andy * Date: 16- ...
- 客户端的验证插件validator
简单,智能,令人愉悦的表单验证~~~ 官方文档:http://www.niceue.com/validator/ <!DOCTYPE html> <html> <head ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)
系列目录 前言: 回顾上一节,我们利用webapi简单的登录并进行了同域访问与跨域访问来获得Token,您可以跳转到上一节下载代码来一起动手. 继续上一篇的文章,我们接下来演示利用拿到的Token来访 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...
- 再谈C#采集,一个绕过高强度安全验证的采集方案?方案很Low,慎入
说起采集,其实我是个外行,以前拔过阿里巴巴的客户数据,在我博客的文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子) 中,介绍过采集用的工具,其实很Low的,分析 ...
- jQuery学习之路(8)- 表单验证插件-Validation
▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...
随机推荐
- 程序员作图工具和技巧,你 get 了么?
分享程序员常用的画图软件和小技巧 大家好,我是鱼皮. 说实话,我觉得做个程序员挺好的.日常工作有很多,写代码.对需求.写方案等等,但我最爱画图:流程图.架构图.交互图.功能模块图.UML 类图.部署图 ...
- 【spring 注解驱动开发】spring ioc 原理
尚学堂spring 注解驱动开发学习笔记之 - Spring容器创建 Spring容器创建 1.Spring容器创建-BeanFactory预准备 2.Spring容器创建-执行BeanFactory ...
- 【REST】使用RestSharp 库消费Restful Service
使用RestSharp 库消费Restful Service 现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Serv ...
- 事务种类jdbc,Hibernate,JTA事务
JDBC事务 String URL="jdbc:sqlserver://localhost:1433;databaseName=test2"; String USER=" ...
- 未解决的html页面banner对不齐
莫名其妙的问题,记录等待解决: 怎么讲呢?就是可能真的没有理解这句话,浏览器是否是需要这句话的,思考! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- Ubuntu 16.04 + python3 源码 安装+使用labelImg最新版
安装 sudo apt-get update sudo apt-get upgrade sudo apt install python3-pip git clone https://github.co ...
- android activity pass data to accessibilityservice 数据传递
不同类型的 service 传递数据的方式不同,accessibilityservice 运行在独立进程,且被系统接管,比较特别 在 AccessibilityService 的 onCreate 内 ...
- css 文字超出俩行省略号显示
.center-titles{ overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: ...
- K8S的部署方式
K8S部署主要有两种方式:
- 优化技术专题-线程间的高性能消息框架-深入浅出Disruptor的使用和原理
前提概要 简单回顾 jdk 里的队列: 阻塞队列: ArrayBlockingQueue主要通过:数组(Object[])+ 计数器(count)+ ReetrantLock的Condition (n ...