PHP Manual
/
Algorithmes

Validation et formatage des numéros de téléphone

18. 06. 2021

Obsah článku

Il n'y a pas de moyen facile de valider et de formater les numéros de téléphone en PHP, j'ai donc écrit une bibliothèque simple qui n'a pas de dépendances, mais qui peut quand même gérer ce rôle.

Le but est de vérifier le format d'un numéro de téléphone, ou de le convertir en une forme canonique de base (qui est toujours valide).

Installation de

Simplement par compositeur :

$ composer require baraja-core/phone-number

Ou téléchargez le paquet Download on GitHub.

Comment utiliser la bibliothèque

Le principe de cet outil est basé sur le formatage et la validation des numéros de téléphone provenant de l'utilisateur, ou de sources sur lesquelles vous n'avez aucun contrôle.

L'utilisation la plus courante consiste à corriger le formatage des numéros de téléphone :

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

La fonction corrige le formatage des nombres et renvoie la chaîne +420 777 123 456.

Si aucun préfixe n'est spécifié par l'utilisateur, le préfixe +420 est supposé. Vous pouvez modifier la préférence par défaut à l'aide du deuxième paramètre :

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

Le code du téléphone n'est écrasé que si l'utilisateur ne le saisit pas et s'il n'est pas détecté automatiquement.

Formatage des entrées et des sorties

La chaîne d'entrée peut ressembler à (presque) n'importe quoi. L'algorithme intégré peut supprimer automatiquement les caractères non valides (par exemple, certains utilisateurs écrivent une note à côté d'un numéro de téléphone qui sera supprimée automatiquement). Vous n'avez donc pas à vous soucier du formatage de l'entrée, mais la sortie sera toujours cohérente.

La sortie a toujours le même aspect (elle est normalisée au format canonique).

Le format général est le suivant :

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

Si vous soumettez une entrée non valide (ou une entrée qui ne peut être corrigée automatiquement), une exception sera levée.

Piégeage des erreurs

Si un nombre ne peut pas être normalisé en toute sécurité à une forme de base, ou s'il n'existe pas, lancez une exception ``InvalidArgumentException`'.

Si vous souhaitez convertir l'exception en booléen, utilisez le validateur d'actif intégré :

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

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