In the past, I tried to verify my ID card. we often used regular expressions to determine if the user entered a full number of 15 or 18 digits and then determined whether the ID card was valid. this method is only the most basic method, the ID card verification provided below can identify true and false ID cards. check the code directly. it's a very simple PHP class.
The code is as follows:
<? Php
$ IDCard = new IDCard ();
Var_dump ($ IDCard: isCard ($ _ GET ['card ']);
/**
* Id card processing
*/
Class IDCard {
// Check whether the ID card is correct
Public static function isCard ($ card ){
$ Card = self: to18Card ($ card );
If (strlen ($ card )! = 18 ){
Return false;
}
$ CardBase = substr ($ card, 0, 17 );
Return (self: getVerifyNum ($ cardBase) = strtoupper (substr ($ card, 17, 1 )));
}
// Format the 15-digit ID card number to 18
Public static function to18Card ($ card ){
$ Card = trim ($ card );
If (strlen ($ card) = 18 ){
Return $ card;
}
If (strlen ($ card )! = 15 ){
Return false;
}
// If the ID card sequence code is 996 997 998 999, these are special codes for elderly people over years old
If (array_search (substr ($ card, 12, 3), array ('20160301', '20160301', '20160301 '))! = False ){
$ Card = substr ($ card, 0, 6). '18'. substr ($ card, 6, 9 );
} Else {
$ Card = substr ($ card, 0, 6). '19'. substr ($ card, 6, 9 );
}
$ Card = $ card. self: getVerifyNum ($ card );
Return $ card;
}
// Calculate the ID card verification code based on the national standard gb 11643-1999
Private static function getVerifyNum ($ cardBase ){
If (strlen ($ cardBase )! = 17 ){
Return false;
}
// Weighting factor
$ Factor = array (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 );
// Check code value
$ Verify_number_list = array ('1', '0', 'X', '9', '8', '7', '6', '5 ', '4', '3', '2 ');
$ Checksum = 0;
For ($ I = 0; $ I <strlen ($ cardBase); $ I ++ ){
$ Checksum + = substr ($ cardBase, $ I, 1) * $ factor [$ I];
}
$ Mod = $ checksum % 11;
$ Verify_number = $ verify_number_list [$ mod];
Return $ verify_number;
}
}
?>
In addition, the ID card number verification site also providesLocal ID card query toolAs follows:
Http://tools.jb51.net/bianmin/sfz