使用php实现从身份证中提取生日


Posted in PHP onMay 09, 2016

用php从身份证中提取生日,包括15位和18位身份证

function getIDCardInfo($IDCard,$format=1){ 
 $result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误 
 $result['flag']='';//0标示成年,1标示未成年 
 $result['tdate']='';//生日,格式如:2012-11-15 
 if(!preg_match("/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/",$IDCard)){ 
  $result['error']=1; 
  return $result; 
 }else{ 
  if(strlen($IDCard)==18)
  { 
   $tyear=intval(substr($IDCard,6,4)); 
   $tmonth=intval(substr($IDCard,10,2)); 
   $tday=intval(substr($IDCard,12,2)); 
  }
  elseif(strlen($IDCard)==15)
  { 
   $tyear=intval("19".substr($IDCard,6,2)); 
   $tmonth=intval(substr($IDCard,8,2)); 
   $tday=intval(substr($IDCard,10,2)); 
  }
   
  if($tyear>date("Y")||$tyear<(date("Y")-100))
  { 
    $flag=0; 
   }
   elseif($tmonth<0||$tmonth>12)
   { 
    $flag=0; 
   }
   elseif($tday<0||$tday>31)
   { 
    $flag=0; 
   }else
   { 
    if($format)
    {
     $tdate=$tyear."-".$tmonth."-".$tday; 
    }
    else
    {
     $tdate=$tmonth."-".$tday; 
    }
     
    if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>18*365*24*60*60)
    { 
     $flag=0; 
    }
    else
    { 
     $flag=1; 
    } 
   }  
 } 
 $result['error']=2;//0:未知错误,1:身份证格式错误,2:无错误 
 $result['isAdult']=$flag;//0标示成年,1标示未成年 
 $result['birthday']=$tdate;//生日日期 
 return $result; 
}
PHP 相关文章推荐
PHP 存取 MySQL 数据库的一个例子
Oct 09 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
PHP高级OOP技术演示
Aug 27 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php中文验证码实现示例分享
Jan 12 PHP
php命名空间学习详解
Feb 27 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
PHP单元测试框架PHPUnit用法详解
Jan 23 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
PHP中strval()函数实例用法
Jun 07 PHP
PHP使用内置函数生成图片的方法详解
May 09 #PHP
php时间计算相关问题小结
May 09 #PHP
php数据访问之查询关键字
May 09 #PHP
php简单实现短网址(短链)还原的方法(测试可用)
May 09 #PHP
php数据访问之增删改查操作
May 09 #PHP
php简单实现批量上传图片的方法
May 09 #PHP
php简单备份与还原MySql的方法
May 09 #PHP
You might like
wordpress之wp-settings.php
2007/08/17 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
php生成rss类用法实例
2015/04/14 PHP
php适配器模式简单应用示例
2019/10/23 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
python抽取指定url页面的title方法
2018/05/11 Python
python顺序的读取文件夹下名称有序的文件方法
2018/07/11 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
使用python将mysql数据库的数据转换为json数据的方法
2019/07/01 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
化学学院毕业生自荐信范文
2013/12/17 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
鼋头渚导游词
2015/02/05 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android