V PHP neexistuje jednoduchý způsob, jak validovat a formátovat telefonní čísla, proto jsem pro to napsal jednoduchou knihovnu, která nemá žádné závislosti, ale přesto zvládne tuto roli obsloužit.
Cílem je zkontrolovat formát telefonního čísla, případně ho převést na základní kanonický tvar (který je vždy validní).
Jednoduše composerem:
$ composer require baraja-core/phone-number
Nebo si balík Stáhněte na GitHubu.
Princip tohoto nástroje je založen na formátování a validaci telefonních čísel od uživatele, nebo ze zdrojů, nad kterými nemáte kontrolu.
Nejčastější použití je oprava formátování telefonního čísla:
$original = '+420 777123456';$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);echo $original . '<br>';echo $formatted;
Funkce opraví formátování čísla a vrátí řetězec +420 777 123 456
.
Pokud uživastel nezadá žádnou předvolbu, předpokládá se předvolba +420
. Výchozí předvolbu můžete změnit druhým parametrem:
// returns: +421 777 123 456\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);
Telefonní předvolba se přepíše jen v případě, kdy ji uživatel nezadá a nepodaří se detekovat automaticky.
Vstupní řetězec může vypadat (téměř) libovolným způsobem. Vestavěný algoritmus umí automaticky odebrat nevalidní znaky (například někteří uživatelé k telefonnímu číslu píší poznámku, která bude automaticky odebrána). Formátování vstupu tedy nemusíte vůbec řešit, výstup ale bude vždy konzistentní.
Výstup vypadá vždy stejně (je normalizován na kanonický tvar).
Obecný formát je:
+420 777 123 456
| \_________/
Prefix |
National number
Pokud předáte nevalidní vstup (nebo vstup, který nelze automaticky opravit), bude vyhozena výjimka.
Pokud číslo nelze bezpečně normalizovat na základní tvar, nebo neexistuje, vyhazujeme výjimku \InvalidArgumentException
.
Pokud si přejete převést výjimku na boolean, použijte vestavěný asset validátor:
\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:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs