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
|
function isValidChacterNumber($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; } }
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; }
function idcard_15to18($idcard){ if(strlen($idcard)!=15){ return false; }else{ 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; }
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; } }
|