أشعر شخصيًا أن وظيفة بطاقة الهوية مفيدة جدًا، خاصة عند إجراء الاستبيانات عبر الإنترنت، ومن المفيد جدًا التحقق من بطاقة الهوية في المعلومات الشخصية، وأود نشرها ومشاركتها.
<?php
// احسب رمز التحقق من بطاقة الهوية وفقًا للمعيار الوطني GB 11643-1999
وظيفة idcard_verify_number($idcard_base){
إذا (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')
المجموعالاختباري
$ = 0;
لـ ($i = 0; $i < strlen($idcard_base); $i++){
$checksum += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $المجموع الاختباري % 11;
$verify_number = $verify_number_list[$mod];
return $verify_number;
}
// قم بترقية بطاقة الهوية المكونة من 15 رقمًا إلى 18 رقمًا
وظيفة idcard_15to18($idcard){
إذا (سترلين($idcard) != 15){
عودة كاذبة.
}آخر{
// إذا كان رمز تسلسل بطاقة الهوية هو 996 997 998 999، فهذه رموز خاصة للأشخاص الذين تزيد أعمارهم عن 100 عام if (array_search(substr($idcard, 12, 3), array('996', '997', '998) ' ، '999')) !== خطأ){
$idcard = substr($idcard, 0, 6) '18'.
}آخر{
$idcard = substr($idcard, 0, 6) '19'.
}
}
$idcard = $idcard_verify_number($idcard)
;
}
// التحقق من صحة رمز التحقق من بطاقة الهوية المكون من 18 رقمًا
وظيفة idcard_checksum18($idcard){
إذا (strlen($idcard) != 18){ return false }
$idcard_base = substr($idcard, 0, 17);
إذا (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
عودة كاذبة.
}آخر{
عودة صحيحة؛
}
}
?>
يشير $idcard_base إلى الرمز الأساسي الموجود في بطاقة الهوية. الرمز الأساسي موجود فقط في بطاقة الهوية المكونة من 18 رقمًا، وهو أول 17 رقمًا من بطاقة الهوية المكونة من 18 رقمًا. ويسمى الرقم الأخير رمز التحقق و لا يتم استخدامه بشكل عام عند استخدامه. اتصل بـ idcard_verify_number() مباشرة. تستخدم معظم التطبيقات المعتادة الوظيفتين الأخيرتين. لا تهتم هذه الوظائف بتنسيق سلسلة المعرف وتقوم بإجراء عمليات فحص التنسيق بنفسها قبل الاتصال.