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 🤘