Частой задачей в работе с клиентскими проектами является нормализация номеров телефонов. Заказчики на сайтах могут вводить телефон в международном формате, в локальном, со скобками, без скобок, с плюсом в начале или без.
Наша Студия разработала свой универсальный метод для украинских телефонных номеров, который позволяет привести номер телефона в локальный или международный формат: или 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
Теперь хотя бы для украинских телефонов можно не страдать 😄