/
Algoritmi

Convalida e formattazione dei numeri di telefono

18. 06. 2021

Obsah článku

Non c'è un modo semplice per convalidare e formattare i numeri di telefono in PHP, così ho scritto una semplice libreria che non ha dipendenze, ma può comunque gestire questo ruolo.

L'obiettivo è controllare il formato di un numero di telefono, o convertirlo in una forma canonica di base (che è sempre valida).

Installazione di

Semplicemente per compositore:

$ composer require baraja-core/phone-number

Oppure scaricate il pacchetto Download on GitHub.

Come usare la biblioteca

Il principio di questo strumento si basa sulla formattazione e la convalida dei numeri di telefono dall'utente, o da fonti su cui non avete controllo.

L'uso più comune è quello di correggere la formattazione dei numeri di telefono:

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

La funzione corregge la formattazione del numero e restituisce la stringa +420 777 123 456.

Se nessun prefisso è specificato dall'utente, si assume il prefisso +420. Potete cambiare la preferenza predefinita con il secondo parametro:

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

Il codice telefonico viene sovrascritto solo se l'utente non lo inserisce e non viene rilevato automaticamente.

Formattazione di ingresso e uscita

La stringa di input può apparire (quasi) in qualsiasi modo. L'algoritmo incorporato può rimuovere automaticamente i caratteri non validi (per esempio, alcuni utenti scrivono una nota accanto a un numero di telefono che verrà rimossa automaticamente). Quindi non devi preoccuparti affatto di formattare l'input, ma l'output sarà sempre coerente.

L'output ha sempre lo stesso aspetto (è normalizzato al formato canonico).

Il formato generale è:

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

Se si invia un input non valido (o un input che non può essere corretto automaticamente), verrà lanciata un'eccezione.

Trapping degli errori

Se un numero non può essere normalizzato in modo sicuro in una forma base, o non esiste, lancia un'eccezione InvalidArgumentException.

Se volete convertire l'eccezione in un booleano, usate il validatore di risorse integrato:

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

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.