Skip to content

Instantly share code, notes, and snippets.

@sjimenez77
Last active December 10, 2015 19:59
Show Gist options
  • Save sjimenez77/4485483 to your computer and use it in GitHub Desktop.
Save sjimenez77/4485483 to your computer and use it in GitHub Desktop.
PHP: Symfony2: Validación campo de formulario DNI
public function esDniValido(ExecutionContext $context)
{
$dni = $this->getDni();
// Comprobar que el formato sea correcto
if (0 === preg_match("/\d{1,8}[a-z]/i", $dni)) {
$context->addViolationAtSubPath('dni', 'El DNI introducido no tiene el formato correcto (entre 1 y 8 números seguidos de una letra, sin guiones y sin dejar ningún espacio en blanco)', array(), null);
return;
}
// Comprobar que la letra cumple con el algoritmo
$numero = substr($dni, 0, -1);
$letra = strtoupper(substr($dni, -1));
if ($letra != substr("TRWAGMYFPDXBNJZSQVHLCKE", strtr($numero, "XYZ", "012")%23, 1)) {
$context->addViolationAtSubPath('dni', 'La letra no coincide con el número del DNI. Comprueba que has escrito bien tanto el número como la letra', array(), null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment