/
Algoritmos

Validación y formato de los números de teléfono

18. 06. 2021

Obsah článku

No hay una manera fácil de validar y formatear los números de teléfono en PHP, así que escribí una biblioteca simple que no tiene dependencias, pero puede manejar esta función.

El objetivo es comprobar el formato de un número de teléfono, o convertirlo en una forma canónica básica (que siempre es válida).

Instalación de

Simplemente por el compositor:

$ composer require baraja-core/phone-number

O descargue el paquete Descargar en GitHub.

Cómo utilizar la biblioteca

El principio de esta herramienta se basa en formatear y validar los números de teléfono del usuario, o de fuentes sobre las que no se tiene control.

El uso más común es corregir el formato del número de teléfono:

$original = '+420 777123456';
$formatted = \Baraja\PhoneNumber\PhoneNumberFormatter::fix($original);
echo $original . '<br>';
echo $formatted;

La función corrige el formato del número y devuelve la cadena +420 777 123 456.

Si el usuario no especifica ningún prefijo, se asume el prefijo +420. Puedes cambiar la preferencia por defecto con el segundo parámetro:

// devuelve: +421 777 123 456
\Baraja\PhoneNumber\PhoneNumberFormatter::fix('+420 777123456', 421);

El código telefónico se sobrescribe sólo si el usuario no lo introduce y no se detecta automáticamente.

Formato de entrada y salida

La cadena de entrada puede tener (casi) cualquier aspecto. El algoritmo incorporado puede eliminar automáticamente los caracteres no válidos (por ejemplo, algunos usuarios escriben una nota junto a un número de teléfono que se eliminará automáticamente). Así que no tiene que preocuparse de formatear la entrada en absoluto, pero la salida siempre será coherente.

La salida siempre tiene el mismo aspecto (está normalizada al formato canónico).

El formato general es:

+420 777 123 456
| \_________/
Prefix |
National number

Si envía una entrada no válida (o una entrada que no puede ser corregida automáticamente), se lanzará una excepción.

Trampa de errores

Si un número no puede ser normalizado con seguridad a una forma base, o no existe, lanza una excepción InvalidArgumentException.

Si desea convertir la excepción en un booleano, utilice el validador de activos incorporado:

\Baraja\PhoneNumber\PhoneNumberValidator::isValid('123'); // falso
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('777123456'); // verdadero
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777123456'); // verdadero
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 777 123 456'); // verdadero
\Baraja\PhoneNumber\PhoneNumberValidator::isValid('+420 77 712 34 56'); // verdadero

Jan Barášek   Více o autorovi

Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.

Rád vám pomůžu:

Související články

1.
3.