IsoCodes\Nif::validate PHP Method

validate() public static method

NIF and DNI validation.
public static validate ( string $nif ) : boolean
$nif string The NIF or NIE
return boolean
    public static function validate($nif)
    {
        $nifCodes = 'TRWAGMYFPDXBNJZSQVHLCKE';
        if (9 !== strlen($nif)) {
            return false;
        }
        $nif = strtoupper(trim($nif));
        $sum = (string) self::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] == $nifCodes[$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] == $nifCodes[$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;
    }

Usage Example

Example #1
0
 /**
  * testInvalidNif
  *
  * @param string $nif
  *
  * @dataProvider getInvalidNifs
  *
  * @return void
  */
 public function testInvalidNif($nif)
 {
     $this->assertFalse(Nif::validate($nif));
 }