He aquí un clásico por el que todos habremos tenido que pasar alguna vez. Acabo de rescatarlo del armario del olvido y lo he modificado para que compruebe también si es un NIE válido (documento de identidad para extranjeros). Espero que a alguien le sirva de ayuda:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function comprobar_documento_identificacion($dni) { if(strlen($dni)<9) { return "DNI demasiado corto."; } $dni = strtoupper($dni); $letra = substr($dni, -1, 1); $numero = substr($dni, 0, 8); // Si es un NIE hay que cambiar la primera letra por 0, 1 ó 2 dependiendo de si es X, Y o Z. $numero = str_replace(array('X', 'Y', 'Z'), array(0, 1, 2), $numero); $modulo = $numero % 23; $letras_validas = "TRWAGMYFPDXBNJZSQVHLCKE"; $letra_correcta = substr($letras_validas, $modulo, 1); if($letra_correcta!=$letra) { return "Letra incorrecta, la letra debería ser la $letra_correcta."; } else { return "OK"; } } |
public function checkdni($dni){
return (substr(“TRWAGMYFPDXBNJZSQVHLCKE”, substr($dni, 0, -1)%23, 1) == strtoupper(substr($dni, -1)) )? true: false;
}
ME sirvió de lujo , muchas gracias!!
Gracias Gorkau! Muy fácil de entender para los que empezamos (y muy útil, claro)…