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
第四节--构造函数和析构函数
Nov 16 PHP
php中处理模拟rewrite 效果
Dec 09 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
php自动加载机制的深入分析
Jun 08 PHP
PHP+ajax分页实例简析
Dec 07 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 PHP
php基于jquery的ajax技术传递json数据简单实例
Apr 15 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 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
CURL状态码列表(详细)
2013/06/27 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
微信支付开发订单查询实例
2016/07/12 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP中创建和编辑Excel表格的方法
2018/09/13 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
jQuery使用andSelf()来包含之前的选择集
2014/05/19 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
关于Python错误重试方法总结
2021/01/03 Python
英国电信商店:BT Shop
2019/12/17 全球购物
春节请假条
2014/04/11 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
心理健康教育主题班会
2015/08/13 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle