Formatear los números de teléfono en PHP

Minahil Noor 30 enero 2023
  1. Usaremos la función preg_match() para formatear números de teléfono en PHP
  2. Usa la función sprintf() para formatear números de teléfono en PHP
Formatear los números de teléfono en PHP

En este artículo, hablaremos de diferentes métodos para formatear números de teléfono usando PHP. Formatearemos el número de teléfono desde +13335092344 a 333-509-2344.

Usaremos la función preg_match() para formatear números de teléfono en PHP

Podemos usar la función incorporada preg_match() para formatear los números de teléfono. Esta función busca un patrón especificado a partir de una cadena. La sintaxis correcta para usar esta función es la siguiente.

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

La función incorporada preg_match() tiene cinco parámetros. Los detalles de sus parámetros son los siguientes

Parámetros Descripción
$pattern obligatorio Es el patrón que queremos comprobar en la cadena dada.
$inputString obligatorio Es la cadena por la que queremos buscar el patrón dado.
$matches opcional Si se da este parámetro, entonces la función almacena el resultado del proceso de emparejamiento en él.
$flags opcional Este parámetro tiene dos opciones: PREG_OFFSET_CAPTURE y PREG_UNMATCHED_AS_NULL. Puedes leer su descripción aquí.
$offset opcional Le dice la función de dónde empezar el proceso de emparejamiento. Normalmente, la búsqueda comienza desde el principio.

Esta función devuelve una variable booleana. Devuelve true si el patrón dado existe. Después de extraer los números, los imprimiremos en el formato requerido.

El siguiente programa muestra la forma en que podemos usar la función PHP preg_match() para formatear los números de teléfono.

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

Hemos usado el patrón /^\+\d(\d{3})(\d{3})(\d{4})$/ para extraer los números de la cadena. La explicación de este patrón es la siguiente.

  • ^ es el símbolo que coincide con el inicio de la cadena.
  • \+ coincide con la + de la cadena. + es un carácter especial en PHP para coincidir una o más veces con el patrón precedente. Por lo tanto, necesitamos añadir \ para escapar de este carácter especial.
  • \d se utiliza para hacer coincidir el número de un solo dígito del 0 al 9. \d{3} significa que coincidirá con tres números consecutivos.

Resultado:

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

Usa la función sprintf() para formatear números de teléfono en PHP

También podemos usar la función sprintf() para formatear números de teléfono en PHP. Esta función da varios patrones de formato para formatear cadenas. Extraeremos los números usando la función substr() en varias cadenas. Después de eso, combinaremos estas cadenas en el formato requerido usando la función sprintf(). La sintaxis correcta para usar esta función es la siguiente.

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

La función sprintf() acepta parámetros N+1. El detalle de sus parámetros es el siguiente

Parámetros Descripción
$formatString obligatorio Es el formato que se aplicará a la cadena o cadenas dadas.
$string1, $string2, …, $stringN obligatorio Es la cadena que queremos formatear. Al menos una cadena es obligatoria.

La función devuelve la cadena formateada. Usaremos el formato %s-%s-%s para combinar las cadenas numéricas. El programa que combina dos cadenas juntas es el siguiente:

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

Artículo relacionado - PHP Regex