Home  >  Article  >  php教程  >  身份证 中提取生日 - 开源中国社区

身份证 中提取生日 - 开源中国社区

PHP中文网
PHP中文网Original
2016-05-20 12:56:331451browse

php代码

//用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[&#39;error&#39;]=2;//0:未知错误,1:身份证格式错误,2:无错误 
    $result[&#39;isAdult&#39;]=$flag;//0标示成年,1标示未成年 
    $result[&#39;birthday&#39;]=$tdate;//生日日期 
    return $result; 
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn