本文第一个实例为大家分享了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提取身份证号码中的生日日期以及验证是否为成年人的函数,希望对大家有用。