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_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.