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 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...
随机推荐
- python3.9 manage.py runserver 报错问题解决
报错信息如下 You have 13 unapplied migration(s). Your project may not work properly until you apply the mi ...
- 见微知著 带你透过内存看 Slice 和 Array的异同
hi, 大家好,我是 hhf. 有这么一个 Go 面试题:请说出 slice 和 array 的区别? 这简直就是送分题.现在思考一下,你咋样回答才能让面试官满意呢? 我这里就不贴这道题的答案了.但是 ...
- python的基础---常用的正则表达式
"""# 一.re 模块 1.作用:根据规则去匹配字符串 2.表达式:匹配字符串的规则 3.常用方法 findall():[掌握]匹配所有的字符串,把匹配结果作为一个列表 ...
- 分享一份【饿了么】Java面试专家岗面试题,欢迎留言交流哦!
前段时间有小伙伴去饿了么面试Java专家岗,记录了一面技术相关的问题,大家可以看看. 基础问题 1.数据库事务的隔离级别? 2.事务的几大特性,并谈一下实现原理 3.如何用redis实现消息的发布订阅 ...
- 题解 P3191 [HNOI2007]紧急疏散EVACUATE
题解 本篇题解做法为BFS+二分+最大流 二分需要撤离的时间,也就是答案(这算是一个比较套路的了) 重点在于建模(设时间为 \(tim\)): 我们将每个门拆点,拆成 \(tim\) 个,每个点向汇点 ...
- 三个线程按循序一个打印A一个打印B一个打印C 循环打印?
第一种 public static volatile int flag = 1; public static void printABC1(){ Thread t1 = new Thread(() - ...
- linux下静态库的制作
在我们编写软件的过程当中,少不了需要使用别人的库函数.因为大家知道,软件是一个协作的工程.作为个人来讲,你不可能一个人完成所有的工作.另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把 ...
- Spring源码解析之ConfigurationClassPostProcessor(三)
在上一章笔者介绍了ConfigurationClassParser.doProcessConfigurationClass(...)方法,在这个方法里调用了processImports(...)方法处 ...
- centos6.10下安装mysql8.0.16root密码修改的坑
上图截取别人的自己懒得弄,检查自己的linux是否有安装就按上图做就行了 接下来是我的干货 mysql8.0安群策略对密码设置很严格规则:大小写加数字和特殊字符串 使用yum安装mysql 后 my. ...
- pytorch 测试 迁移学习
训练源码: 源码仓库:https://github.com/pytorch/tutorials 迁移学习测试代码:tutorials/beginner_source/transfer_learning ...