โดยส่วนตัวแล้วรู้สึกว่าฟังก์ชั่นบัตรประจำตัวมีประโยชน์มากโดยเฉพาะในการทำแบบสอบถามออนไลน์มีประโยชน์มากในการตรวจสอบบัตรประจำตัวประชาชนในข้อมูลส่วนบุคคลฉันต้องการโพสต์และแบ่งปัน
<?php
// คำนวณรหัสยืนยันบัตรประจำตัวประชาชนตามมาตรฐานแห่งชาติ GB 11643-1999
ฟังก์ชั่น 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);
// สอดคล้องกับการตรวจสอบโค้ด Value$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2') ;
$เช็คซัม = 0;
สำหรับ ($i = 0; $i < strlen($idcard_base); $i++){
$เช็คซัม += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $เช็คซัม % 11;
$verify_number = $verify_number_list[$mod];
กลับ $verify_number;
}
// อัพเกรดบัตรประจำตัวประชาชน 15 หลักเป็น 18 หลัก
ฟังก์ชั่น idcard_15to18($idcard){
ถ้า (strlen($idcard) != 15){
กลับเท็จ;
}อื่น{
// หากรหัสลำดับบัตรประจำตัวประชาชนคือ 996 997 998 999 จะเป็นรหัสพิเศษสำหรับผู้ที่มีอายุมากกว่า 100 ปี ถ้า (array_search(substr($idcard, 12, 3), array('996', '997', '998) ' , '999')) !== false){
$idcard = substr($idcard, 0, 6) . substr($idcard, 6, 9);
}อื่น{
$idcard = substr($idcard, 0, 6) . ย่อย ($idcard, 6, 9);
-
}
$idcard = $idcard_verify_number($idcard)
;
}
// ตรวจสอบความถูกต้องของรหัสยืนยันบัตรประจำตัวประชาชน 18 หลัก
ฟังก์ชั่น idcard_checksum18($idcard){
if (strlen($idcard) != 18){ return false; }
$idcard_base = ย่อย($idcard, 0, 17);
ถ้า (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
กลับเท็จ;
}อื่น{
กลับเป็นจริง;
-
-
?
$idcard_base หมายถึงรหัสฐานในบัตรประจำตัวประชาชน รหัสฐานจะพบได้เฉพาะในบัตรประจำตัวประชาชน 18 หลัก ซึ่งเป็นรหัส 17 หลักแรกของบัตรประจำตัวประชาชน 18 หลักสุดท้ายเรียกว่ารหัสยืนยันและ โดยทั่วไปจะไม่ใช้เมื่อเรียกใช้ idcard_verify_number() โดยตรง แอปพลิเคชันปกติส่วนใหญ่ใช้ฟังก์ชันสองรายการหลังนี้ไม่สนใจรูปแบบของสตริง ID และทำการตรวจสอบรูปแบบด้วยตนเองก่อนการโทร