Exemplo n.º 1
0
 /**
  * CIF validation.
  *
  * @param string $cif The CIF
  *
  * @return bool
  */
 public static function validate($cif)
 {
     $cifCodes = 'JABCDEFGHI';
     if (9 !== strlen($cif)) {
         return false;
     }
     $cif = strtoupper(trim($cif));
     $sum = (string) Nif::getCifSum($cif);
     $n = (10 - substr($sum, -1)) % 10;
     if (preg_match('/^[ABCDEFGHJKNPQRSUVW]{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] == $cifCodes[$n];
         } else {
             // Alfanumérico
             if (is_numeric($cif[8])) {
                 return $cif[8] == $n;
             } else {
                 return $cif[8] == $cifCodes[$n];
             }
         }
     }
     return false;
 }
Exemplo n.º 2
0
 /**
  * @inheritdoc
  */
 public function validateValue($value)
 {
     $codes = self::CODES;
     if (self::LENGTH !== strlen($value)) {
         return false;
     }
     $value = strtoupper(trim($value));
     $sum = (string) Nif::getCifSum($value);
     $n = (10 - substr($sum, -1)) % 10;
     if (preg_match(self::PATTERN, $value)) {
         if (in_array($value[0], self::NUM)) {
             // Numerico
             return $value[8] == $n;
         } elseif (in_array($value[0], self::LETTER)) {
             // Letras
             return $value[8] == $codes[$n];
         } else {
             // Alfanumérico
             if (is_numeric($value[8])) {
                 return $value[8] == $n;
             } else {
                 return $value[8] == $codes[$n];
             }
         }
     }
     return false;
 }