Formatar números de telefone em PHP
- 
          
            Utilize a função preg_match()para formatar números de telefone em PHP
- 
          
            Utilize a função sprintf()para 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_CAPTUREePREG_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.