【发布时间】:2021-07-21 13:54:17
【问题描述】:
我必须验证爱沙尼亚的企业 ID(不是公民 ID)。 ID是9个数字,但我认为可能有一个分配它们的系统。例如,这里是芬兰验证,最后一个数字作为校验和
if (preg_match('/^\d{7}-\d{1}$/', $user_input)) {
list($num, $control) = preg_split('[-]', $user_input);
// Add leading zeros if number is < 7
$num = str_pad($num, 7, 0, STR_PAD_LEFT);
$controlSum = 0;
$controlSum += (int)substr($num, 0, 1)*7;
$controlSum += (int)substr($num, 1, 1)*9;
$controlSum += (int)substr($num, 2, 1)*10;
$controlSum += (int)substr($num, 3, 1)*5;
$controlSum += (int)substr($num, 4, 1)*8;
$controlSum += (int)substr($num, 5, 1)*4;
$controlSum += (int)substr($num, 6, 1)*2;
$controlSum = $controlSum%11;
if ($controlSum == 0) {
return ($controlSum == $control) ? true : false;
} elseif ($controlSum >= 2 && $controlSum <= 10 ) {
return ((11 - $controlSum) == $control) ? true : false;
}
}
通常所有这些类型的 ID 都有一个校验和,所以这不仅仅是在其上运行正则表达式的问题,而且我找不到任何与爱沙尼亚企业相关的内容。
任何指向已知库的链接,示例将不胜感激。我正在使用 PHP,但这些可以是任何语言。
谢谢。
【问题讨论】:
标签: php validation checksum