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脚本数据库功能详解(上)
Oct 09 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
跟我学Laravel之安装Laravel
Oct 15 PHP
php绘制一条弧线的方法
Jan 24 PHP
php实现递归抓取网页类实例
Apr 03 PHP
PHP排序算法类实例
Jun 17 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
Dec 25 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
自制PHP框架之设计模式
May 07 PHP
分析php://output和php://stdout的区别
May 06 PHP
php的无刷新操作实现方法分析
Feb 28 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
关于时间计算的结总
2006/12/06 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
php开发工具有哪五款
2015/11/09 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JavaScript常用本地对象小结
2016/03/28 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
python文件写入实例分析
2015/04/08 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python装饰器简单用法实例小结
2018/12/03 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
python地震数据可视化详解
2019/06/18 Python
聊聊python中的异常嵌套
2020/09/01 Python
python编程的核心知识点总结
2021/02/08 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
租房协议书
2014/09/12 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
2014年导购员工作总结
2014/11/18 职场文书
党委工作总结2015
2015/04/27 职场文书
中学政教处工作总结
2015/08/13 职场文书
爱国主题班会教案
2015/08/14 职场文书