当前位置:首页 > PHP教程 > php函数 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-02 15:34:28 浏览: 评论:0 

本文给大家分享的是一则使用php实现的从身份证中提取出生日期的函数,非常的简单,有需要的小伙伴可以参考下。

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

  1. function getIDCardInfo($IDCard,$format=1){  
  2.  $result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误  
  3.  $result['flag']='';//0标示成年,1标示未成年  
  4.  $result['tdate']='';//生日,格式如:2012-11-15  
  5.  if(!preg_match("/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/",$IDCard)){  
  6.   $result['error']=1;  
  7.   return $result;  
  8.  }else{  
  9.   if(strlen($IDCard)==18) 
  10.   {  
  11.    $tyear=intval(substr($IDCard,6,4));  
  12.    $tmonth=intval(substr($IDCard,10,2));  
  13.    $tday=intval(substr($IDCard,12,2));  
  14.   } 
  15.   elseif(strlen($IDCard)==15) 
  16.   {  
  17.    $tyear=intval("19".substr($IDCard,6,2));  
  18.    $tmonth=intval(substr($IDCard,8,2));  
  19.    $tday=intval(substr($IDCard,10,2));  
  20.   } 
  21.      
  22.   if($tyear>date("Y")||$tyear<(date("Y")-100)) 
  23.   {  
  24.     $flag=0;  
  25.    } 
  26.    elseif($tmonth<0||$tmonth>12) 
  27.    {  
  28.     $flag=0;  
  29.    } 
  30.    elseif($tday<0||$tday>31) 
  31.    {  
  32.     $flag=0;  
  33.    }else 
  34.    {  
  35.     if($format
  36.     { 
  37.      $tdate=$tyear."-".$tmonth."-".$tday;  
  38.     } 
  39.     else 
  40.     { 
  41.      $tdate=$tmonth."-".$tday;  
  42.     } 
  43.        
  44.     if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>18*365*24*60*60) 
  45.     {  
  46.      $flag=0;  
  47.     } 
  48.     else 
  49.     {  
  50.      $flag=1;  
  51.     }  
  52.    }   
  53.  }  
  54.  $result['error']=2;//0:未知错误,1:身份证格式错误,2:无错误  
  55.  $result['isAdult']=$flag;//0标示成年,1标示未成年  
  56.  $result['birthday']=$tdate;//生日日期  
  57.  return $result;  
  58. }

Tags: php身份证 php提取生日

分享到: