PHP Manual
/
Algoritmer

Validering og formatering af telefonnumre

18. 06. 2021

Obsah článku

Der er ingen nem måde at validere og formatere telefonnumre på i PHP, så jeg skrev et simpelt bibliotek, som ikke har nogen afhængigheder, men som stadig kan håndtere denne rolle.

Målet er at kontrollere formatet af et telefonnummer eller at konvertere det til en grundlæggende kanonisk form (som altid er gyldig).

Installation af

Simpelthen efter komponist:

$ composer require baraja-core/phone-number

Du kan også downloade pakken [Download on GitHub] (https://github.com/baraja-core/phone-number).

Sådan bruger du biblioteket

Princippet i dette værktøj er baseret på formatering og validering af telefonnumre fra brugeren eller fra kilder, som du ikke har kontrol over.

Den mest almindelige anvendelse er at rette formateringen af telefonnumre:

$original = '+420 777123456';
$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);
echo $original . '<br>';
echo $formatted;

Funktionen korrigerer talformateringen og returnerer strengen +420 777 123 456.

Hvis brugeren ikke har angivet noget præfiks, antages præfikset +420. Du kan ændre standardpræferencen med den anden parameter:

// returnerer: +421 777 123 456
\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);

Telefonkoden overskrives kun, hvis brugeren ikke indtaster den, og den ikke opdages automatisk.

Formatering af input og output

Indtastningsstrengen kan se ud på (næsten) alle måder. Den indbyggede algoritme kan automatisk fjerne ugyldige tegn (nogle brugere skriver f.eks. en note ved siden af et telefonnummer, som automatisk fjernes), så du behøver slet ikke at bekymre dig om at formatere input, men output vil altid være konsistent.

Output ser altid ens ud (det er normaliseret til det kanoniske format).

Det generelle format er:

+420 777 123 456
| \_________/
Prefix |
National number

Hvis du indsender et input, der ikke er gyldigt (eller et input, der ikke kan korrigeres automatisk), vil der blive sendt en undtagelse.

Fældefangst af fejl

Hvis et tal ikke kan normaliseres sikkert til en basisform eller ikke findes, skal du kaste en \InvalidArgumentException-undtagelse.

Hvis du ønsker at konvertere undtagelsen til en boolean, skal du bruge den indbyggede validator for aktiver:

\Baraja\PhoneNumber\PhoneNumberValidator::isValid('123'); // falsk
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('777123456'); // sandt
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777123456'); // sandt
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777 123 456'); // sandt
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 77 712 34 56'); // sandt

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