php正则判断是否为合法身份证号的方法


Posted in PHP onMarch 16, 2017

本文实例讲述了php正则判断是否为合法身份证号的方法。分享给大家供大家参考,具体如下:

/**
 * 判断是否为合法的身份证号码
 * @param $mobile
 * @return int
 */
function isCreditNo($vStr){
 $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})$/', $vStr)) return false;
 if (!in_array(substr($vStr, 0, 2), $vCity)) return false;
 $vStr = preg_replace('/[xX]$/i', 'a', $vStr);
 $vLength = strlen($vStr);
 if ($vLength == 18) {
  $vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
 } else {
  $vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 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($vStr, 17 - $i, 1);
   $vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
  }
  if($vSum % 11 != 1) return false;
 }
 return true;
}
PHP 相关文章推荐
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
PHP Array交叉表实现代码
Aug 05 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
PHP实现防止表单重复提交功能【基于token验证】
May 24 PHP
PHP PDOStatement::setAttribute讲解
Feb 01 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 #PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 #PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 #PHP
php生成无限栏目树
Mar 16 #PHP
CodeIgniter框架常见用法工作总结
Mar 16 #PHP
PHP常用算法和数据结构示例(必看篇)
Mar 15 #PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 #PHP
You might like
具有时效性的php加密解密函数代码
2013/06/19 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
PHP新特性之字节码缓存和内置服务器
2017/08/11 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
2017/09/20 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
解决vue prop传值default属性如何使用,为何不生效的问题
2020/09/21 Javascript
详细探究Python中的字典容器
2015/04/14 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
python基于opencv实现人脸识别
2021/01/04 Python
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
物流管理专业应届生求职信
2013/11/21 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
如何通过简单的代码描述Angular父组件、子组件传值
2022/04/07 Javascript
MySQL串行化隔离级别(间隙锁实现)
2022/06/16 MySQL