欢迎光临
我们一直在努力

验证身份证号是否正确的php函数和使用方法

建站超值云服务器,限时71元/月

这里是PHP 验证身份证号是否正确的PHP函数,此验证方法考虑了特殊的身份证编号,如身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码。

 

函数一: 计算身份证校验码,根据国家标准GB 11643-1999

 

function idcard_verify_number($idcard_base){

if(strlen($idcard_base)!=17){

return false;

}

//加权因子

$factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);

//校验码对应值

$verify_number_list=array(‘1′,’0′,’X’,’9′,’8′,’7′,’6′,’5′,’4′,’3′,’2′);

$checksum=0;

for($i=0;$i<strlen($idcard_base);$i++){

$checksum += substr($idcard_base,$i,1) * $factor[$i];

}

$mod=$checksum % 11;

$verify_number=$verify_number_list[$mod];

return $verify_number;

}

函数二:将15位身份证升级到18位

 

function idcard_15to18($idcard){

if(strlen($idcard)!=15){

return false;

}else{

// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码

if(array_search(substr($idcard,12,3),array(‘996′,’997′,’998′,’999′)) !== false){

$idcard=substr($idcard,0,6).’18’.substr($idcard,6,9);

}else{

$idcard=substr($idcard,0,6).’19’.substr($idcard,6,9);

}

}

$idcard=$idcard.idcard_verify_number($idcard);

return $idcard;

}

函数三:18位身份证校验码有效性检查

 

function idcard_checksum18($idcard){

if(strlen($idcard)!=18){

return false;

}

$idcard_base=substr($idcard,0,17);

if(idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){

return false;

}else{

return true;

}

}

枢纽函数:根据身份证长度调用不同的处理函数

 

function validation_filter_id_card($id_card){

if(strlen($id_card)==18){

return idcard_checksum18($id_card);

}elseif((strlen($id_card)==15)){

$id_card=idcard_15to18($id_card);

return idcard_checksum18($id_card);

}else{

return false;

}

}

调用方法如:

 

$result = validation_filter_id_card(‘身份证号码’);

if($result == true){

echo ‘身份证号码正确’;

}

else{

echo ‘身份证号码不正确’;

}

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 验证身份证号是否正确的php函数和使用方法
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址