PHP. Расшифровка украинских ИНН

24.10.2011 в 12:46

Что такое ИНН (Идентификационный номер налогоплательщика)? Это не просто набор цифр. Помимо уникального идентификационного номера в нем содержится информация о дате рождения и поле его владельца. И эту информацию можно расшифровать.

В некоторых проектах необходимо контролировать правильность данных, введенных пользователем. Для того, чтобы проверить дату рождения пользователя, можно запросить ИНН, расшифровав который можно сравнить дату, введенную пользователем с датой, зашифрованной в ИНН. Кстати, в банках так и делают. Более того, можно контролировать правильность самого ИНН, так как в нем содержится контрольная цифра.

С помощью PHP можно написать функцию, которая будет возвращать расшифрованные данные в виде массива.

function ParseINN($inn = null)
{
    if ( !preg_match('/^d{10}$/', $inn) || empty($inn) ) return false;
    $result = array();
    $result['inn'] = $inn;
    $result['sex'] = (substr($inn, 8, 1) % 2) ? 'm' : 'f';       
   
    $split = str_split($inn);
    $summ = $split[0]*(-1) + $split[1]*5 + $split[2]*7 + $split[3]*9 + $split[4]*4 + $split[5]*6 + $split[6]*10 + $split[7]*5 + $split[8]*7;
    $result['control'] = (int)($summ - (11 * (int)($summ/11)));       
   
    $result['status'] = ($result['control'] == (int)$split[9]) ? true : false;

    $inn = substr($inn, 0, 5);
    $normal_date = date('d.m.Y', strtotime('01/01/1900 + ' . $inn . ' days - 1 days'));
    list($result['day'], $result['month'], $result['year']) = explode('.', $normal_date);
    return $result; }

Первые пять цифр кода — количество дней, прошедших с 1 января 1900 года до дня рождения владельца. Следующие четыре цифры — порядковый номер человека родившегося в этот день. Девятая цифра означает пол. Последний символ — контрольное число. Алгоритм вычисления можно узнать из вышеприведенного кода.

Интересное

Тебя растили на убой
Мать говорила тебе: «Вася, иди осторожнее, там у подъезда какие-то парни». Учителя в Школе...
Идентификационный номер по дате рождения Капуста - еда викингов
На Руси начинается сезон заготовки капусты. Что мы знаем об этом удивительном лечебном овоще?...
Наступление трансгенов
С каждым годом в мире растет количество площадей с генетически модифицированными (ГМ), или...
Идентификационный номер по дате рождения Школа выживания для молодых родителей
Современные родители спешат поскорее определить своих малышей в детские сады, отдать их в...

Комментарии