/** * 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; }
/** * @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; }