Formatta i numeri di telefono in PHP

Minahil Noor 13 aprile 2021
  1. Usa la funzione preg_match() per formattare i numeri di telefono in PHP
  2. Usa la funzione sprintf() per formattare i numeri di telefono in PHP
Formatta i numeri di telefono in PHP

In questo articolo, parleremo di diversi metodi per formattare i numeri di telefono utilizzando PHP. Formatteremo il numero di telefono da +13335092344 a 333-509-2344.

Usa la funzione preg_match() per formattare i numeri di telefono in PHP

Possiamo usare la funzione incorporata preg_match() per formattare i numeri di telefono. Questa funzione cerca un modello specificato da una stringa. La sintassi corretta per utilizzare questa funzione è la seguente.

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

La funzione incorporata preg_match() ha cinque parametri. I dettagli dei suoi parametri sono i seguenti

Parametri Descrizione
$pattern obbligatorio È il modello che vogliamo controllare nella stringa data.
$inputString obbligatorio È la stringa per la quale vogliamo cercare il modello dato.
$matches opzionale Se viene fornito questo parametro, la funzione memorizza al suo interno il risultato del processo di corrispondenza.
$flags opzionale Questo parametro ha due opzioni: PREG_OFFSET_CAPTURE e PREG_UNMATCHED_AS_NULL. Puoi leggere la sua descrizione qui.
$offset opzionale Indica la funzione di dove avviare il processo di corrispondenza. Di solito, la ricerca inizia dall’inizio.

Questa funzione restituisce una variabile booleana. Restituisce vero se il modello dato esiste. Dopo aver estratto i numeri, li stamperemo nel formato richiesto.

Il programma sotto mostra il modo in cui possiamo usare la funzione preg_match() di PHP per formattare i numeri di telefono.

<?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.");
?> 

Abbiamo usato il pattern /^\+\d(\d{3})(\d{3})(\d{4})$/ per estrarre i numeri dalla stringa. La spiegazione di questo modello è la seguente.

  • ^ è il simbolo che corrisponde all’inizio della stringa.
  • \+ corrisponde al + nella stringa. + È un carattere speciale in PHP che corrisponde una o più volte al modello precedente. Pertanto, dobbiamo aggiungere \ prima di + per sfuggire a questo carattere speciale.
  • \d viene utilizzato per abbinare il numero a una cifra da 0 a 9. \d{3} significa che corrisponderà a tre numeri consecutivi.

Produzione:

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

Usa la funzione sprintf() per formattare i numeri di telefono in PHP

Possiamo anche usare la funzione sprintf() per formattare i numeri di telefono in PHP. Questa funzione fornisce diversi modelli di formattazione per formattare le stringhe. Estrarremo i numeri usando la funzione substr() in più stringhe. Dopodiché, combineremo queste stringhe nel formato richiesto usando la funzione sprintf(). La sintassi corretta per utilizzare questa funzione è la seguente.

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

La funzione sprintf() accetta N+1 parametri. Il dettaglio dei suoi parametri è il seguente

Parametri Descrizione
$formatString obbligatorio È il formato che verrà applicato alla stringa o alle stringhe date.
$string1, $string2, $stringN obbligatorio È la stringa che vogliamo formattare. Almeno una stringa è obbligatoria.

La funzione restituisce la stringa formattata. Useremo il formato %s-%s-%s per combinare le stringhe numeriche. Il programma che combina due stringhe è il seguente.

<?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.");
?> 

Produzione:

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