Formater les numéros de téléphone en PHP

  1. Utilisez la fonction preg_match() pour formater les numéros de téléphone en PHP
  2. Utilisez la fonction sprintf() pour formater les numéros de téléphone en PHP

Dans cet article, nous parlerons des différentes méthodes de formatage des numéros de téléphone en PHP. Nous formaterons le numéro de téléphone de +13335092344 à 333-509-2344.

Utilisez la fonction preg_match() pour formater les numéros de téléphone en PHP

Nous pouvons utiliser la fonction intégrée preg_match() pour formater les numéros de téléphone. Cette fonction recherche un modèle spécifique à partir d’une chaîne de caractères. La syntaxe correcte pour utiliser cette fonction est la suivante.

preg_match($pattern, $inputString, $matches, $flag, $offset);

La fonction intégrée preg_match() a cinq paramètres. Les détails de ses paramètres sont les suivants

Paramètres Description
$pattern obligatoire C’est le modèle que nous voulons vérifier dans la chaîne donnée.
$inputString obligatoire Il s’agit de la chaîne de caractères pour laquelle nous voulons rechercher le modèle donné.
$matches facultatif Si ce paramètre est donné, alors la fonction y stocke le résultat du processus de correspondance.
$flags facultatif Ce paramètre a deux options : PREG_OFFSET_CAPTURE et PREG_UNMATCHED_AS_NULL. Vous pouvez lire sa description ici.
$offset facultatif Il indique la fonction de l’endroit où commencer le processus de mise en correspondance. En général, la recherche commence par le début.

Cette fonction retourne une variable booléenne. Elle retourne vrai si le modèle donné existe. Après avoir extrait les chiffres, nous les imprimons dans le format requis.

Le programme ci-dessous montre la façon dont nous pouvons utiliser la fonction PHP preg_match() pour formater les numéros de téléphone.

<?php 
$number = '+12333509234';
echo("The original number is $number.\n");
if(  preg_match( '/^\+\d(\d{3})(\d{3})(\d{4})$/', $number,  $matches ) )
{
    $result = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
}
echo("The formatted number is $result.");
?> 

Nous avons utilisé le modèle /^\+\d(\d{3})(\d{3})(\d{4})$/ pour extraire les numéros de la chaîne. L’explication de ce modèle est la suivante.

  • ^ est le symbole qui correspond au début de la chaîne.
  • \+ correspond au + de la chaîne. Le + est un caractère spécial en PHP qui correspond à une ou plusieurs fois le motif précédent. Par conséquent, nous devons ajouter \ avant + pour échapper à ce caractère spécial.
  • \d est utilisé pour correspondre au nombre à un chiffre de 0 à 9. \d{3} signifie qu’il correspondra à trois nombres consécutifs.

Production :

The original number is +12333509234.
The formatted number is 233-350-9234. 

Utilisez la fonction sprintf() pour formater les numéros de téléphone en PHP

Nous pouvons également utiliser la fonction sprintf() pour formater les numéros de téléphone en PHP. Cette fonction donne plusieurs modèles de formatage pour formater les chaînes de caractères. Nous extrairons les numéros en utilisant la fonction substr() dans plusieurs chaînes de caractères. Ensuite, nous combinerons ces chaînes dans le format requis en utilisant la fonction sprintf(). La syntaxe correcte pour utiliser cette fonction est la suivante.

sprintf($formatString, $string1, $string2, ..., $stringN)

La fonction sprintf() accepte N+1 paramètres. Le détail de ses paramètres est le suivant

Paramètres Description
$formatString obligatoire C’est le format qui sera appliqué à la ou aux chaînes de caractères données.
$string1, $string2, $stringN obligatoire C’est la chaîne de caractères que nous voulons formater. Au moins une chaîne est obligatoire.

La fonction retourne la chaîne formatée. Nous utiliserons le format %s-%s-%s pour combiner les chaînes numériques entre elles. Le programme qui combine deux chaînes de caractères ensemble est le suivant :

<?php 
$number = '+12333509234';
echo("The original number is $number.\n");
$result = sprintf("%s-%s-%s",
              substr($number, 2, 3),
              substr($number, 5, 3),
              substr($number, 8));
echo("The formatted number is $result.");
?> 

Production :

The original number is +12333509234.
The formatted number is 233-350-9234.