Не існує простого способу перевірки та форматування телефонних номерів в PHP, тому я написав просту бібліотеку, яка не має ніяких залежностей, але все одно може впоратися з цією роллю.
Мета - перевірити формат телефонного номера, або перетворити його до базової канонічної форми (яка завжди є дійсною).
Просто композитором:
$ composer require baraja-core/phone-number
Або завантажити пакет Завантажити на GitHub.
Принцип роботи цього інструменту базується на форматуванні та перевірці телефонних номерів, отриманих від користувача, або з джерел, над якими ви не маєте контролю.
Найпоширеніше використання - виправлення форматування телефонних номерів:
$original = '+420 777123456';$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);echo $original . '<br>';echo $formatted;
Функція виправляє форматування числа і повертає рядок +420 777 123 456
.
Якщо користувач не вказав префікс, то приймається префікс +420
. Ви можете змінити налаштування за замовчуванням за допомогою другого параметра:
// повертається: +421 777 123 456\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);
Код телефону перезаписується тільки в тому випадку, якщо користувач його не ввів і він не визначився автоматично.
Вхідний рядок може мати (майже) довільний вигляд. Вбудований алгоритм може автоматично видаляти недопустимі символи (наприклад, деякі користувачі пишуть поруч з номером телефону примітку, яка буде видалена автоматично). Таким чином, ви можете взагалі не турбуватися про форматування вхідних даних, а вихідні дані завжди будуть узгоджуватися.
Вихідні дані завжди виглядають однаково (вони нормалізовані до канонічного формату).
Загальний формат такий:
+420 777 123 456| \_________/Prefix |National number
Якщо ви надішлете невірні дані (або дані, які не можуть бути автоматично виправлені), буде згенеровано виняток.
Якщо число не може бути безпечно приведене до базової форми, або не існує, згенерувати виключення \InvalidArgumentException
.
Якщо ви бажаєте перетворити виняток у логічний, скористайтеся вбудованим валідатором ресурсів:
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('123'); // false\Baraja\PhoneNumber\PhoneNumberValidator::isValid('777123456'); // true\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777123456'); // true\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777 123 456'); // true\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 77 712 34 56'); // true
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | uk