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函数解决SQL injection
Oct 09 PHP
php读取数据库信息的几种方法
May 24 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
PHP浮点数精度问题汇总
May 13 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
php注册审核重点解析(数据访问)
May 23 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP常量define和const的区别详解
May 18 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
PHP使用QR Code生成二维码实例
Jul 07 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP 中的批处理的实现
2007/06/14 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
php多文件上传实现代码
2014/02/20 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
JavaScript导航脚本判断当前导航
2016/07/12 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
面向对象概念面试题(.NET)
2016/11/04 面试题
浪漫婚礼主持词
2014/03/14 职场文书
会计核算科岗位职责
2014/03/19 职场文书
毕业生应聘求职信
2014/07/10 职场文书
离婚起诉书范本
2015/05/18 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL