Det finns inget enkelt sätt att validera och formatera telefonnummer i PHP, så jag skrev ett enkelt bibliotek som inte har några beroenden, men som ändå kan hantera den här rollen.
Målet är att kontrollera formatet för ett telefonnummer eller konvertera det till en grundläggande kanonisk form (som alltid är giltig).
Helt enkelt efter kompositör:
$ composer require baraja-core/phone-number
Du kan också hämta paketet [Download on GitHub] (https://github.com/baraja-core/phone-number).
Principen för det här verktyget bygger på att formatera och validera telefonnummer från användaren eller från källor som du inte har någon kontroll över.
Den vanligaste användningen är att korrigera formateringen av telefonnummer:
$original = '+420 777123456';$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);echo $original . '<br>';echo $formatted;
Funktionen korrigerar talformateringen och returnerar strängen +420 777 123 456
.
Om användaren inte anger något prefix antas prefixet +420
. Du kan ändra standardinställningen med den andra parametern:
// Returnerar: +421 777 123 456\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);
Telefonkoden skrivs över endast om användaren inte anger den och den inte upptäcks automatiskt.
Inmatningssträngen kan se ut (nästan) hur som helst. Den inbyggda algoritmen kan automatiskt ta bort ogiltiga tecken (vissa användare skriver till exempel en anteckning bredvid ett telefonnummer som tas bort automatiskt). Du behöver alltså inte oroa dig för att formatera inmatningen alls, men resultatet kommer alltid att vara konsekvent.
Utgången ser alltid likadan ut (den är normaliserad till det kanoniska formatet).
Det allmänna formatet är:
+420 777 123 456| \_________/Prefix |National number
Om du skickar in en icke giltig inmatning (eller en inmatning som inte kan korrigeras automatiskt) kommer ett undantag att visas.
Om ett tal inte kan normaliseras säkert till en basform, eller om det inte existerar, ska du kasta ett undantag \InvalidArgumentException
.
Om du vill omvandla undantaget till en boolsk siffra kan du använda den inbyggda validatorn för tillgångar:
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('123'); // falskt\Baraja\PhoneNumber\PhoneNumberValidator::isValid('777123456'); // sant\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777123456'); // sant\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777 123 456'); // sant\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 77 712 34 56'); // sant
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: ... | sv