Le regular expressions (espressioni regolari) servono per descrivere dei modelli di stringa. E’ possibile verificare, ad esempio, se un codice fiscale o un indirizzo email sono stati inseriti correttamente.
Un’espressione regolare è una stringa, definita pattern, che contiene al suo interno una serie di simboli attraverso i quali è possibile identificare gruppi di stringhe.
Con il rilascio della versione 5.3 di PHP le funzioni ereg per le espressioni regolari POSIX sono state dichiarate deprecate e verranno rimosse dalla release 6 del linguaggio; utilizzarle non è quindi più una buona pratica, chi desidera impiegare un’alternativa potrà farlo grazie alle funzioni PCRE.
Un’applicazione immediata è quella di controllare i caratteri inseriti in una form che poi verrà usata per fare una query in un database. Il controllo della lunghezza e del tipo di caratteri immessi è fondamentale affinché la query successiva possa aver esito positivo.
Questo controllo è alla base delle pagine dinamiche.
Eccone un esempio:
preg_match()

controllo che lo username sia corretto ossia che contenga solo caratteri minuscoli e lettere, inoltre che abbia lunghezza minima 3 e massima 15.
Inoltre il comando deve essere sempre compreso tra //
Un altro esempio è il seguente:

Che fornisce come output:
340
8652066
quindi estrae il prefisso ed il numero di telefono. Si è usato il comando \d per identificare i numeri e \d* per prendere tutta la sequenza di numeri.
Proviamo solo a pensare quali controlli si devono fare in C++ per la coerenza del dato ed invece la potenza di tale comando.
Adesso unisco i due esempi precedenti supponendo di aver creato una form in cui ho richiesto il numero di telefono e devo controllare il campo e successivamente prendere il prefisso ed il numero di telefono:

Questa tabella mostra tutti i parametri che possono essere inseriti
| Meta carattere | Descrizione |
|---|---|
| \ | Carattere generico di escape |
| ^ | Delimitatore di inizio della stringa |
| DOLLARO | 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 |
preg_match_all()
E’ un comando simile al precedente solo che estrae tutte le occorrenze presente nel criterio di ricerca, ad esempio il seguente estratto di codice:

che cerca i codici numerici all’interno della stringa e fornisce come output i tre numeri.
preg_replace()
Si può sostituire un’espressione con un’altra.
| Parametro | Descrizione |
|---|---|
DOLLAROpattern | Pattern di ricerca. |
DOLLAROreplacement | La stringa che verrà sostituita. |
DOLLAROsubject | Stringa da sostituire. |
DOLLAROlimit | Limite delle sostituzioni da effettuare (opzionale). |
in questo esempio sostituisco i numeri di telefono con degli asterischi, si pensi ad esempio ad una password immessa che deve essere sostituita con degli asterischi o viceversa.



































