PHP – Validar CIF

En el artículo anterior vimos cómo validar un NIF con PHP, y en éste, veremos cómo validad un CIF con PHP. Una función sencilla que devuelve true si es correcto o false, si no lo es.

Aquí está la función en PHP que valida un CIF:

function validateCif ($cif) {
      $cif_codes = 'JABCDEFGHI';

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

      if (preg_match ('/^[ABCDEFGHJNPQRSUVW]{1}/', $cif)) {
        if (in_array ($cif[0], array ('A', 'B', 'E', 'H'))) {
          // Numerico
          return ($cif[8] == $n);
        } elseif (in_array ($cif[0], array ('K', 'P', 'Q', 'S'))) {
          // Letras
          return ($cif[8] == $cif_codes[$n]);
        } else {
          // Alfanumérico
          if (is_numeric ($cif[8])) {
            return ($cif[8] == $n);
          } else {
            return ($cif[8] == $cif_codes[$n]);
          }
        }
      }

      return false;
    }

Si os fijáis esta función, llama a otra que valida que la letra sea correcta, la función getCifSum. Es la función encargada de mirar si la letra del CIF es la correcta. Veamos esa función:

function getCifSum($cif) {
      $sum = $cif[2] + $cif[4] + $cif[6];

      for ($i = 1; $i<8; $i += 2) {
        $tmp = (string) (2 * $cif[$i]);

        $tmp = $tmp[0] + ((strlen ($tmp) == 2) ?  $tmp[1] : 0);

        $sum += $tmp;
      }

      return $sum;
    }

Con estas dos funciones, podemos ver si el CIF es válido. Hemos visto muchas más funciones que también son válidas por internet, eso dependrá de vuestras necesidades.

Más información

Información relacionada

Deja un comentario

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

*