Cake\Localized\Validation\TwValidation::personId PHP Method

personId() public static method

Checks national identify card number for Taiwan.
public static personId ( string $check ) : boolean
$check string The value to check.
return boolean Success.
    public static function personId($check)
    {
        $check = strtoupper($check);
        if (!preg_match('/^[A-Z][1-2][0-9]{8}$/', $check)) {
            return false;
        }
        $keyTable = ['A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 34, 'J' => 18, 'K' => 19, 'L' => 20, 'M' => 21, 'N' => 22, 'O' => 35, 'P' => 23, 'Q' => 24, 'R' => 25, 'S' => 26, 'T' => 27, 'U' => 28, 'V' => 29, 'W' => 32, 'X' => 30, 'Y' => 31, 'Z' => 33];
        $n1 = $keyTable[$check[0]];
        $checksum = intval($n1 / 10) + $n1 % 10 * 9;
        for ($i = 1; $i < 9; $i++) {
            $checksum += $check[$i] * (9 - $i);
        }
        return substr(10 - $checksum % 10, 0, 1) == $check[9];
    }