Ya vimos cómo validar un DNI o NIE español en JavaScript; ahora te lo dejo en PHP.
El código
class validDni
{
public static function check($value)
{
$pattern = "/^[XYZ]?\d{5,8}[A-Z]$/";
$dni = strtoupper($value);
if (preg_match($pattern, $dni))
{
$number = substr($dni, 0, -1);
$number = str_replace('X', 0, $number);
$number = str_replace('Y', 1, $number);
$number = str_replace('Z', 2, $number);
$dni = substr($dni, -1, 1);
$start = $number % 23;
$letter = 'TRWAGMYFPDXBNJZSQVHLCKET';
$letter = substr('TRWAGMYFPDXBNJZSQVHLCKET', $start, 1);
if ($letter != $dni)
{
echo 'Wrong ID, the letter of the NIF does not correspond';
return false;
} else {
echo 'Correct ID';
return true;
}
} else {
echo 'Wrong ID, invalid format';
return false;
}
}
}
validDni::check('73547889F');
Cómo usarlo
Basta con llamar al método estático validDni::check() con el DNI o NIE: devuelve true si es válido y false si no lo es.
Es un script bastante simple pero eficiente. Puedes verlo también en el repositorio de GitHub.