Saya pribadi merasa fungsi KTP cukup bermanfaat, terutama ketika melakukan kuesioner online. Sangat berguna untuk memverifikasi KTP di informasi pribadi.
<?php
//Hitung kode verifikasi KTP sesuai standar nasional GB 11643-1999
fungsi idcard_verify_number($idcard_base){
jika (strlen($idcard_base) != 17){ kembali salah;
// Faktor pembobotan $faktor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
// Sesuai dengan kode pengecekan Nilai$verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2') ;
$checksum = 0;
untuk ($i = 0; $i < strlen($idcard_base); $i++){
$checksum += substr($idcard_base, $i, 1) * $faktor[$i];
}
$mod = $checksum % 11;
$verify_number = $verify_number_list[$mod];
kembalikan $verify_number;
}
// Tingkatkan KTP 15 digit menjadi 18 digit
fungsi idcard_15to18($idcard){
jika (strlen($idcard) != 15){
kembali salah;
}kalau tidak{
// Jika kode urut KTP 996 997 998 999, ini adalah kode khusus untuk orang yang berusia di atas 100 tahun if (array_search(substr($idcard, 12, 3), array('996', '997', '998 ' , '999')) !== salah){
$idcard = substr($idcard, 0, 6) '18'.
}kalau tidak{
$idcard = substr($idcard, 0, 6) '19'.
}
}
$idcard = $idcard .idcard_verify_number($idcard)
;
}
// Cek keabsahan kode verifikasi KTP 18 digit
fungsi idcard_checksum18($idcard){
jika (strlen($idcard) != 18){ kembali salah;
$idcard_base = substr($idcard, 0, 17);
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
kembali salah;
}kalau tidak{
kembali benar;
}
}
?>
$idcard_base mengacu pada kode dasar yang ada di KTP. Kode dasar hanya terdapat pada 18 digit KTP, yaitu 17 digit pertama dari 18 digit KTP umumnya tidak digunakan saat menggunakannya. Panggil idcard_verify_number() secara langsung. Sebagian besar aplikasi biasa menggunakan dua fungsi terakhir. Fungsi-fungsi ini tidak peduli dengan format string ID dan melakukan pemeriksaan format sendiri sebelum memanggil.