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).
Simpelthen efter komponist:
$ composer require baraja-core/phone-number
Du kan også downloade pakken [Download on GitHub] (https://github.com/baraja-core/phone-number).
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.
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.
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:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | da