PHP – Validar un NIF

Hay muchas versiones y opciones por internet para validar un NIF en PHP. Os proponemos una muy interesante y completa.

Ya vimos en anteriores artículos cómo validar un NIE en PHP y cómo validar un CIF en PHP. Ahora nos toca ver otro formato de documento identificador como es el NIF, uno de los más demandados en formularios de webs.

Aquí está el código:

function validateNif($nif) {
      $nif_codes = 'TRWAGMYFPDXBNJZSQVHLCKE';

      $sum = (string) $this->getCifSum ($nif);
      $n = 10 - substr($sum, -1);

      if (preg_match ('/^[0-9]{8}[A-Z]{1}$/', $nif)) {
        // DNIs
        $num = substr($nif, 0, 8);

        return ($nif[8] == $nif_codes[$num % 23]);
      } elseif (preg_match ('/^[XYZ][0-9]{7}[A-Z]{1}$/', $nif)) {
        // NIEs normales
        $tmp = substr ($nif, 1, 7);
        $tmp = strtr(substr ($nif, 0, 1), 'XYZ', '012') . $tmp;

        return ($nif[8] == $nif_codes[$tmp % 23]);
      } elseif (preg_match ('/^[KLM]{1}/', $nif)) {
        // NIFs especiales
        return ($nif[8] == chr($n + 64));
      } elseif (preg_match ('/^[T]{1}[A-Z0-9]{8}$/', $nif)) {
        // NIE extraño
        return true;
      }

      return false;
    }

Esta función devolverá si el parámetro que se le facilita es o no un NIF. Mira las cuatro reglas posibles para que se cumpla que sea NIF lo que se le pasa como parámetro.

La primera regla mira si es un DNI. La segunda si es un NIE normal. La tercera si es es un NIF especial. La última recla si es un NIE no habitual.

En resumen, mira los 4 formatos mas comunes para los NIF. Si es un de ellos, devuelve true. En caso contrario, devuelve false.

Espero que os sea de utilidad el código para validar un NIF en PHP.

Más información en:
https://bulma.net/funcion-para-validar-el-nif-cif-y-nie-en-php/
https://github.com/amnesty/drupal-nif-nie-cif-validator/blob/master/includes/nif-nie-cif.php



Información relacionada

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*