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 相关文章推荐
Discuz 模板引擎的封装类代码
Jul 18 PHP
PHP注释实例技巧
Oct 03 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
解析php时间戳与日期的转换
Jun 06 PHP
php提取字符串中网站url地址的方法
Dec 03 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
PHP7 新增功能
Mar 09 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
jQuery 源码分析笔记
2011/05/25 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
js 操作select相关方法函数
2009/12/06 Javascript
JavaScript window.document的属性、方法和事件小结
2012/10/24 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
详解vue修改elementUI的分页组件视图没更新问题
2020/11/13 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
python属于跨平台语言码
2020/06/09 Python
Python中pass的作用与使用教程
2020/11/13 Python
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
留学推荐信怎么写
2014/01/25 职场文书
求职自荐信怎么写
2014/03/06 职场文书
个人担保书格式范文
2014/05/12 职场文书
课外活动实习计划
2015/01/19 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers