Formatear los números de teléfono en PHP
-
Usaremos la función
preg_match()
para formatear números de teléfono en PHP -
Usa la función
sprintf()
para formatear 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.