使用php实现从身份证中提取生日
内容摘要
用php从身份证中提取生日,包括15位和18位身份证
function getIDCardInfo($IDCard,$format=1){
$result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误
$result['flag
function getIDCardInfo($IDCard,$format=1){
$result['error']=0;//0:未知错误,1:身份证格式错误,2:无错误
$result['flag
文章正文
用php从身份证中提取生日,包括15位和18位身份证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 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 ; } |
代码注释