public
function
id_card(){
$id_card
=
'360822197801180255'
;
$z
=
substr
(
$id_card
,17);
$xishu
=
array
(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
$a
=
substr
(
$id_card
,0,17);
$b
=
str_split
(
$a
);
$c
= null;
$d
= null;
foreach
(
$xishu
as
$key
=>
$value
) {
$c
[] =
$b
[
$key
]*
$value
;}
foreach
(
$c
as
$key
) {
$d
=
$d
+
$key
;}
$e
=
$d
% 11 ;
switch
(
$e
){
case
0:
$e
= 1;
break
;
case
1:
$e
= 0;
break
;
case
2:
$e
=
"X"
;
break
;
case
3:
$e
= 9;
break
;
case
4:
$e
= 8;
break
;
case
5:
$e
= 7;
break
;
case
6:
$e
= 6;
break
;
case
7:
$e
= 5;
break
;
case
8:
$e
= 4;
break
;
case
9:
$e
= 3;
break
;
case
10:
$e
= 2;
break
;
default
:
echo
"号码不在规则内"
;
}
if
(
$e
==
$z
) {
echo
(
'身份证号码正确!'
);
}
else
{
echo
(
'身份证号码错误!'
);
}
}
18位身份证号码组成ddddddyyyymmddxxsp
dddddd为6位的地方代码,根据这6位可以获得该身份证号所在地。
yyyy为4位的年份代码,是身份证持有人的出身年份。
mm为2位的月份代码,是身份证持有人的出身月份。
dd为2位的日期代码,是身份证持有人的出身日。
xx为2位的顺序码,这个是随机数。
s为1位的性别代码,奇数代表男性,偶数代表女性。
最后一位为校验码,以上代码就是效验规则。