public static function personId($check)
{
if (strlen($check) !== 18) {
return false;
}
$sum = 0;
$weight = 1;
for ($i = 16; $i >= 0; $i--) {
$weight = $weight * 2 % 11;
$a = (int) $check[$i];
if ($a < 0 || $a > 9) {
return false;
}
$sum += $a * $weight;
}
if (strtolower($check[17]) === 'x') {
$checksum = 10;
} else {
$checksum = (int) $check[17];
if ($checksum < 0 || $checksum > 9) {
return false;
}
}
return $checksum === (12 - $sum % 11) % 11;
}