Продолжая тему валидаторов, публикую код двух функций для проверки введенных пользователем кодов ОГРН или ОГРНИП.
Проверка кода ОГРН. Код содержит 13 знаков, последний из них используется для проверки «контрольной суммы».
1 2 3 4 5 6 7 8 9 10 11 12 |
/* проверка ОГРН */ function valid_ogrn($ogrn) { $ogrn = trim($ogrn); //13ти значный код if (preg_match('#([\d]{13})#', $ogrn, $m)) { $code1 = substr($m[1], 0, 12); $code2 = floor($code1 / 11) * 11; $code = ($code1 - $code2) % 10; if ($code == $m[1][12]) return $m[1]; } return false; } |
Для ИП ОРГН содержит уже 15 знаков, но контрольная сумма вычисляется похожим способом.
1 2 3 4 5 6 7 8 9 10 11 12 |
/* проверка ОГРНИП */ function valid_ogrnip($ogrn) { $ogrn = trim($ogrn); //15ти значный код if (preg_match('#([\d]{15})#', $ogrn, $m)) { $code1 = substr($m[1], 0, 14); $code2 = floor($code1 / 13) * 13; $code = ($code1 - $code2) % 10; if ($code == $m[1][14]) return $m[1]; } return false; } |
Обе функции пытаются прочитать код из предложенной строки и проверяют его по контрольной сумме. Если код верен — он возвращается как результат работы. Если верного кода нет в строке — функция вернет false.