Escribí varias funciones relacionadas con las tarjetas de identificación. Personalmente, creo que son bastante útiles, especialmente cuando se realizan cuestionarios en línea. Es muy útil verificar las tarjetas de identificación en la información personal. Sin embargo, solo hay unos pocos solicitantes, por lo que también podría hacerlo. guárdalos en mi blog.
<?php
// Calcular el código de verificación de la tarjeta de identificación según el estándar nacional GB 11643-1999
función idcard_verify_number($idcard_base){
if (strlen($idcard_base) != 17){ return false }
// Factor de ponderación
;
$factor = matriz(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
//Valor correspondiente del código de verificación
$verify_number_list = matriz('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$suma de comprobación = 0;
para ($i = 0; $i < strlen($idcard_base); $i++){
$suma de verificación += substr($idcard_base, $i, 1) * $factor[$i];
}
$mod = $suma de comprobación % 11;
$verify_number = $verify_number_list[$mod];
return $verify_number
}
// Actualiza la tarjeta de identificación de 15 dígitos a 18 dígitos;
función idcard_15to18($tarjeta de identificación){
si (strlen($tarjeta de identificación) != 15){
devolver falso;
}demás{
// Si el código de secuencia del DNI es 996 997 998 999, son códigos especiales para mayores de 100 años
if (array_search(substr($idcard, 12, 3), array('996', '997', '998', '999')) !== false){
$tarjeta de identificación = substr($tarjeta de identificación, 0, 6) '18'.
}demás{
$tarjeta de identificación = substr($tarjeta de identificación, 0, 6) '19'.
}
}
$tarjeta de identificación = $tarjeta de identificación
.
}
// verificación de validez del código de verificación de tarjeta de identificación de 18 dígitos
función idcard_checksum18($tarjeta de identificación){
if (strlen($idcard) != 18){ return false }
$idcard_base = substr($idcard, 0, 17);
if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){
devolver falso;
}demás{
devolver verdadero;
}
}
?>
El $idcard_base se refiere al código base en la tarjeta de identificación. El código base solo se encuentra en la tarjeta de identificación de 18 dígitos, que son los primeros 17 dígitos de la tarjeta de identificación de 18 dígitos. código y generalmente se usa. No es necesario llamar a idcard_verify_number() directamente. La mayoría de las aplicaciones habituales usan las dos últimas funciones. Estas funciones no se preocupan por el formato de la cadena de identificación y realizan la verificación del formato antes de llamar.