此接口可確認身份證號碼是真實的,但無法確定身份證號碼與姓名對應
public static function checkCard($card){
$city = [11=>"北京",12=>"天津",13=>"河北",14=>"山西",15=>"內蒙古",21=>"遼寧",22=>"吉林",23=>"黑龍江 ",31=>"上海",32=>"江蘇",33=>"浙江",34=>"安徽",35=>"福建",36=>"江西",37=>"山東",41=>"河南",42=>"湖北 ",43=>"湖南",44=>"廣東",45=>"廣西",46=>"海南",50=>"重慶",51=>"四川",52=>"貴州",53=>"雲南",54=>"西藏 ",61=>"陝西",62=>"甘肅",63=>"青海",64=>"寧夏",65=>"新疆",71=>"臺灣",81=>"香港",82=>"澳門",91=>"國外 "];
$tip = "";
$match = "/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/";
$pass= true;
if(!$card || !preg_match($match,$card)){
$pass = false;
}else if(!$city[substr($card,0,2)]){
$pass = false;
}else{
if(strlen($card) == 18){
$card = str_split($card);
$factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
$parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
$sum = 0;
$ai = 0;
$wi = 0;
for ($i = 0; $i < 17; $i++)
{
$ai = $card[$i];
$wi = $factor[$i];
$sum += $ai * $wi;
}
$last = $parity[$sum % 11];
if($parity[$sum % 11] != $card[17]){
$pass =false;
}
}else{
$pass =false;
}
}
if(!$pass) return false;
return true;
}