Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 26 di 67
  • livello intermedio
Indice lezioni

Le espressioni regolari in PHP

Scopriamo come utilizzare le espressioni regolari (o regex) in PHP per identificare e validare gruppi di stringhe. Analizziamo le regole delle espressioni regolari e la sintassi PCRE.
Scopriamo come utilizzare le espressioni regolari (o regex) in PHP per identificare e validare gruppi di stringhe. Analizziamo le regole delle espressioni regolari e la sintassi PCRE.
Link copiato negli appunti

Espressioni regolari e pattern

Un'espressione regolare è una stringa, definita pattern, che contiene al suo interno una serie di simboli attraverso i quali è possibile identificare gruppi di stringhe.

Proviamo a semplificare la definizione attraverso un esempio. Supponiamo di avere la necessità di verificare che una stringa contenga al suo interno uno username valido per la nostra applicazione, quali sono i controlli da effettuare? Probabilmente almeno i seguenti:

  • la stringa contiene caratteri alfabetici minuscoli e numeri;
  • la stringa può contenere anche i simboli "_" e "-";
  • la stringa deve essere di lunghezza compresa tra 3 e 15 caratteri.

Effettuare tutte queste verifiche senza le espressioni regolari (o regex

/^[a-z0-9_-]{3,15}$/

Ad un primo sguardo questa serie di caratteri può sembrare incomprensibile ma andiamo a scomporla ed analizzarla.

  1. Innanzitutto in PHP un qualsiasi pattern deve iniziare e terminare con il carattere /
  2. Il simbolo ^ match
  3. [a-z0-9_-] a z 0 9 _ -
  4. {3,15}
  5. Il simbolo $

Validazione delle stringhe con le regex

Ora che abbiamo analizzato alcune delle regole di un'espressione regolare probabilmente ci stiamo chiedendo come fare con PHP a verificare che la stringa sia valida o meno. Per determinarlo possiamo usare la funzione preg_match(). Tale funzione prende in ingresso principalmente tre parametri:

  1. il $pattern
  2. il $subject
  3. $matches

L'esempio diventerà quindi:

$username = 'dymissy86';

if (!preg_match('/^[a-z0-9_-]{3,15}$/', $username)) {
    echo "Lo username non è valido";
} else {
    echo "Username valido";
}

Dato che lo username passato come parametro è formalmente valido, verrà stampato un messaggio di successo. Se invece $username Dymissy86

Sintassi PCRE

Le regole delle espressioni regolari appartengono alla famiglia PCRE (Perl Compatible Regular Expressions). Vediamo insieme quali sono i meta caratteri che definiscono la sintassi delle regex.

Meta carattere Descrizione
\ Carattere generico di escape
^ Delimitatore di inizio della stringa
$ Delimitatore di fine della stringa
. Definisce ogni carattere eccetto il carattere di invio
[ Carattere di inizio della definizione di classe
] Carattere di fine della definizione di classe
| Inizio di un ramo alternativo
( Inizio subpattern
) Fine subpattern
? Indica 0 o 1 occorrenze
* 0 o più occorrenze
+ 1 o più occorrenze
{ Inizio intervallo minimo/massimo di occorrenze
} Fine intervallo minimo/massimo di occorrenze
- Indica un range di caratteri all'interno di parentesi []
. Indica un singolo carattere
\s Un carattere di spaziatura (space, tab, newline)
\S Tutto eccetto un carattere di spaziatura
\d Un carattere numerico (0-9)
\D Tutto eccetto un carattere numerico
\w Una lettera (a-z, A-Z, 0-9, _)
\W Tutto eccetto una lettera
[aeiou] Uno dei caratteri compresi nella parentesi
[^aeiou] Tutto eccetto i caratteri compresi nella parentesi
(foo|bar|baz) Una delle alternative tra parentesi

Una volta definiti e compresi i meta caratteri possiamo iniziare a lavorare con le espressioni regolari. Nella prossima lezione vedremo insieme altri esempi di regex e quali sono le funzioni più importanti messe a disposizione da PHP.

Ti consigliamo anche