Beberapa fungsi yang berkaitan dengan KTP sudah saya tulis, menurut saya pribadi cukup berguna, apalagi saat melakukan kuisioner online, sangat berguna untuk memverifikasi KTP di informasi pribadi simpan di blog saya.
<?php
//Hitung kode verifikasi KTP sesuai standar nasional GB 11643-1999
fungsi idcard_verify_number($idcard_base){
if (strlen($idcard_base) != 17){ return false; }
// Faktor pembobotan
$faktor = larik(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
//Nilai kode cek yang sesuai
$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];
return $verify_number;
}
// Tingkatkan kartu ID 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 kode khusus untuk orang yang berusia di atas 100 tahun
if (array_search(substr($idcard, 12, 3), array('996', '997', '998', '999')) !== false){
$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);
jika (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 kode dan umumnya digunakan. Tidak perlu memanggil 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 sebelum memanggil.