public static function snils($check)
{
$pattern = '/\\d{3}-\\d{3}-\\d{3} \\d{2}/';
if (!preg_match($pattern, $check)) {
return false;
}
list($id, $checksum) = explode(' ', $check, 2);
$id = str_replace('-', '', $id);
// getting digits & positions from id string
$digits = array_reverse(str_split($id));
$sum = 0;
foreach ($digits as $position => $value) {
$sum += ($position + 1) * $value;
}
$calculatedChecksum = $sum % 101;
$calculatedChecksum = str_pad($calculatedChecksum, 2, '0', STR_PAD_LEFT);
$calculatedChecksum = substr($calculatedChecksum, -2);
return $calculatedChecksum === $checksum;
}