Una función php muy simple para validar un número de DNI español (8 números y 1 letra) con formato correcto:
function validar_dni($dni){ $letra = substr($dni, -1); $numeros = substr($dni, 0, -1); if ( substr("TRWAGMYFPDXBNJZSQVHLCKE", $numeros%23, 1) == $letra && strlen($letra) == 1 && strlen ($numeros) == 8 ){ echo 'valido'; }else{ echo 'no valido'; } } validar_dni('73547889F'); // válido validar_dni('73547889M'); // no válido validar_dni('73547889'); // no válido
Si tu país tiene otro formato o más dígitos como en Argentina (8–9), Honduras (13 dígitos), etc… puedes personalizar este código en función de tus necesidades.
Agradezco tu comentario 🤘