Formatar números de telefone em PHP

Minahil Noor 30 janeiro 2023
  1. Utilize a função preg_match() para formatar números de telefone em PHP
  2. Utilize a função sprintf() para formatar números de telefone em PHP
Formatar números de telefone em PHP

Neste artigo, falaremos sobre diferentes métodos para formatar números de telefone usando PHP. Iremos formatar o número de telefone de +13335092344 a 333-509-2344.

Utilize a função preg_match() para formatar números de telefone em PHP

Podemos utilizar a função integrada preg_match() para formatar números de telefone. Esta função procura um padrão especificado a partir de uma string. A sintaxe correcta para utilizar esta função é a seguinte.

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

A função embutida preg_match() tem cinco parâmetros. Os detalhes dos seus parâmetros são os seguintes

Parâmetros Descrição
$pattern obrigatório É o padrão que queremos verificar na string dada.
$inputString obrigatório É o string pelo qual queremos pesquisar o padrão dado.
$matches opcional Se este parâmetro for dado, então a função armazena nele o resultado do processo de correspondência.
$flags opcional Este parâmetro tem duas opções: PREG_OFFSET_CAPTURE e PREG_UNMATCHED_AS_NULL. Pode ler a sua descrição aqui.
$offset opcional Diz a função de onde iniciar o processo de correspondência. Normalmente, a pesquisa começa desde o início.

Esta função retorna uma variável booleana. Retorna verdadeira se o padrão dado existir. Depois de extrair os números, imprimi-los-emos no formato requerido.

O programa abaixo mostra a forma pela qual podemos utilizar a função PHP preg_match() para formatar números de telefone.

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

Utilizámos /^\+\d(\d{3})(\d{3})(\d{4})$/ padrão para extrair números da string. A explicação deste padrão é a seguinte.

  • ^ é o símbolo que corresponde ao início da string.
  • \+ corresponde ao + da string. + é um carácter especial em PHP para corresponder a uma ou mais vezes do padrão anterior. Portanto, precisamos de adicionar \ antes de + para escapar a este carácter especial.
  • O \d é utilizado para corresponder ao número de um dígito de 0-9. \d{3} significa que corresponderá a três números consecutivos.

Resultado:

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

Utilize a função sprintf() para formatar números de telefone em PHP

Também podemos utilizar a função sprintf() para formatar números de telefone em PHP. Esta função dá vários padrões de formatação para formatar strings. Iremos extrair os números utilizando a função substr() em várias strings. Depois disso, combinaremos estas strings no formato requerido utilizando a função sprintf(). A sintaxe correcta para utilizar esta função é a seguinte.

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

A função sprintf() aceita parâmetros N+1. O detalhe dos seus parâmetros é o seguinte

Parâmetros Descrição
$formatString obrigatório É o formato que será aplicado à string ou strings em questão.
$string1, $string2, $stringN. obrigatório É o string que queremos formatar. Pelo menos uma string é obrigatória.

A função devolve a string formatada. Utilizaremos o formato %s-%s-%s para combinar as strings numéricas. O programa que combina duas strings é o seguinte:

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

Resultado:

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