本文第一个实例为大家分享了PHP根据身份证号,自动获取对应的星座函数,供大家参考,具体内容如下
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<?php function get_xingzuo( $cid ) { // 根据身份证号,自动返回对应的星座 if (!isIdCard( $cid )) return '' ; $bir = substr ( $cid ,10,4); $month = (int) substr ( $bir ,0,2); $day = (int) substr ( $bir ,2); $strValue = '' ; if (( $month == 1 && $day >= 20) || ( $month == 2 && $day <= 18)) { $strValue = "水瓶座" ; } else if (( $month == 2 && $day >= 19) || ( $month == 3 && $day <= 20)) { $strValue = "双鱼座" ; } else if (( $month == 3 && $day > 20) || ( $month == 4 && $day <= 19)) { $strValue = "白羊座" ; } else if (( $month == 4 && $day >= 20) || ( $month == 5 && $day <= 20)) { $strValue = "金牛座" ; } else if (( $month == 5 && $day >= 21) || ( $month == 6 && $day <= 21)) { $strValue = "双子座" ; } else if (( $month == 6 && $day > 21) || ( $month == 7 && $day <= 22)) { $strValue = "巨蟹座" ; } else if (( $month == 7 && $day > 22) || ( $month == 8 && $day <= 22)) { $strValue = "狮子座" ; } else if (( $month == 8 && $day >= 23) || ( $month == 9 && $day <= 22)) { $strValue = "处女座" ; } else if (( $month == 9 && $day >= 23) || ( $month == 10 && $day <= 23)) { $strValue = "天秤座" ; } else if (( $month == 10 && $day > 23) || ( $month == 11 && $day <= 22)) { $strValue = "天蝎座" ; } else if (( $month == 11 && $day > 22) || ( $month == 12 && $day <= 21)) { $strValue = "射手座" ; } else if (( $month == 12 && $day > 21) || ( $month == 1 && $day <= 19)) { $strValue = "魔羯座" ; } return $strValue ; } function get_shengxiao( $cid ) { //根据身份证号,自动返回对应的生肖 if (!isIdCard( $cid )) return '' ; $start = 1901; $end = $end = (int) substr ( $cid ,6,4); $x = ( $start - $end ) % 12; $value = "" ; if ( $x == 1 || $x == -11) { $value = "鼠" ;} if ( $x == 0) { $value = "牛" ;} if ( $x == 11 || $x == -1) { $value = "虎" ;} if ( $x == 10 || $x == -2) { $value = "兔" ;} if ( $x == 9 || $x == -3) { $value = "龙" ;} if ( $x == 8 || $x == -4) { $value = "蛇" ;} if ( $x == 7 || $x == -5) { $value = "马" ;} if ( $x == 6 || $x == -6) { $value = "羊" ;} if ( $x == 5 || $x == -7) { $value = "猴" ;} if ( $x == 4 || $x == -8) { $value = "鸡" ;} if ( $x == 3 || $x == -9) { $value = "狗" ;} if ( $x == 2 || $x == -10) { $value = "猪" ;} return $value ; } function get_xingbie( $cid ) { //根据身份证号,自动返回性别 if (!isIdCard( $cid )) return '' ; $sexint = (int) substr ( $cid ,16,1); return $sexint % 2 === 0 ? '女' : '男' ; } function isIdCard( $number ) { // 检查是否是身份证号 // 转化为大写,如出现x $number = strtoupper ( $number ); //加权因子 $wi = array (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //校验码串 $ai = array ( '1' , '0' , 'X' , '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' ); //按顺序循环处理前17位 $sigma = 0; for ( $i = 0; $i < 17; $i ++) { //提取前17位的其中一位,并将变量类型转为实数 $b = (int) $number { $i }; //提取相应的加权因子 $w = $wi [ $i ]; //把从身份证号码中提取的一位数字和加权因子相乘,并累加 $sigma += $b * $w ; } //计算序号 $snumber = $sigma % 11; //按照序号从校验码串中提取相应的字符。 $check_number = $ai [ $snumber ]; if ( $number {17} == $check_number ) { return true; } else { return false; } } ?> |
第二个实例:用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 ; } |
最后一个实例: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
|
<?php //用php从身份证中提取生日,包括位和位身份证 function getIDCardInfo( $IDCard ){ $result [ 'error' ]=; //:未知错误,:身份证格式错误,:无错误 $result [ 'flag' ]= '' ; //标示成年,标示未成年 $result [ 'tdate' ]= '' ; //生日,格式如:-- if (! eregi ( "^[-]([-a-zA-Z]{}|[-a-zA-Z]{})$" , $IDCard )){ $result [ 'error' ]=; return $result ; } else { if ( strlen ( $IDCard )==){ $tyear = intval ( substr ( $IDCard ,,)); $tmonth = intval ( substr ( $IDCard ,,)); $tday = intval ( substr ( $IDCard ,,)); if ( $tyear > date ( "Y" )|| $tyear <( date ( "Y" )-)){ $flag =; } elseif ( $tmonth <|| $tmonth >){ $flag =; } elseif ( $tday <|| $tday >){ $flag =; } else { $tdate = $tyear . "-" . $tmonth . "-" . $tday . " ::" ; if ((time()- mktime (,,, $tmonth , $tday , $tyear ))>****){ $flag =; } else { $flag =; } } } elseif ( strlen ( $IDCard )==){ $tyear = intval ( "" . substr ( $IDCard ,,)); $tmonth = intval ( substr ( $IDCard ,,)); $tday = intval ( substr ( $IDCard ,,)); if ( $tyear > date ( "Y" )|| $tyear <( date ( "Y" )-)){ $flag =; } elseif ( $tmonth <|| $tmonth >){ $flag =; } elseif ( $tday <|| $tday >){ $flag =; } else { $tdate = $tyear . "-" . $tmonth . "-" . $tday . " ::" ; if ((time()- mktime (,,, $tmonth , $tday , $tyear ))>****){ $flag =; } else { $flag =; } } } } $result [ 'error' ]=; //:未知错误,:身份证格式错误,:无错误 $result [ 'isAdult' ]= $flag ; //标示成年,标示未成年 $result [ 'birthday' ]= $tdate ; //生日日期 return $result ; } |
用法如下:
getIDCardInfo('身份证号码');
以上代码就是小编跟大家分享的php提取身份证号码中的生日日期以及验证是否为成年人的函数,希望对大家有用。