PHP Manual
/
Algoritmer

Validering och formatering av telefonnummer

18. 06. 2021

Obsah článku

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).

Installation av

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).

Hur du använder biblioteket

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.

Formatering av in- och utdata

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.

Fällande av fel

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:

Související články

1.
3.
Status:
All systems normal.
2024