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 相关文章推荐
杏林同学录(九)
Oct 09 PHP
adodb与adodb_lite之比较
Dec 31 PHP
php获取远程图片体积大小的实例
Nov 12 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
php缩放gif和png图透明背景变成黑色的解决方法
Oct 14 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
Jul 01 PHP
PHP生成可点击刷新的验证码简单示例
May 13 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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
加强版phplib的DB类
2008/03/31 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
php短址转换实现方法
2015/02/25 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP获取文件扩展名的方法实例总结
2017/06/10 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
[机器视觉]使用python自动识别验证码详解
2019/05/16 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
成品库仓管员岗位职责
2014/04/06 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
工作试用期自我评价
2015/03/10 职场文书
公司备用金管理制度
2015/08/04 职场文书