用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 ;
}
|