Загрузка...
Нормализатор номеров телефонов

Достаточно частой задачей в работе с клиентскими проектами является нормализация номеров телефонов. Заказчики на сайтах могут вводить телефон в международном формате, в локальном, со скобками, без скобок, с плюсом в начале или без.

Наша Студия разработала свой универсальный метод для украинских номеров телефонов, который позволяет привести номер телефона к локальному или международному формату: либо 0991234567 либо +380991234567

Если Вы пишете на Laravel или похожих системах, этот медод можно добавить в helpers.php в качестве вспомогательного.


function normalize_phone_number($s, $internation = true)
{
$s = trim($s);
$s = preg_replace('/[^0-9]/', '', $s);
$s = preg_replace('/^[+]?380/', '0', $s);
if (strlen($s) === 11 && substr($s, 0, 1) === '8') $s = substr($s, 1);
if (strlen($s) === 11 && substr($s, 0, 2) === '38') $s = '0' . substr($s, 2);
if (strlen($s) === 12 && substr($s, 0, 2) === '38') $s = substr($s, 2);

if (!$internation) {
return $s;
}

return $s = '+38' . $s;

}

Давайте протестируем:


echo normalize_phone_number('380(99)123-45-678');
+3809912345678
echo normalize_phone_number('380(99)123-45-678', false);
09912345678

Отныне хотя бы для украинских номеров телефонов можно не страдать 😄