<? 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; } }
?> |