A volte è necessario verificare le caratteristiche delle stringhe di caratteri, invece di una corrispondenza esatta con una stringa specifica.
In tal caso si confronta una stringa con un schema, chiamato "espressione regolare", a volte nota come "regex".
Una regex è composta da caratteri speciali e/o caratteri normali. I caratteri speciali hanno un loro univoco significato. Se si volesse utilizzare un carattere speciale come un carattere normale bisognerà farlo precedere da uno slash rovesciato \, operazione nota come "escape".
vediamo il significato
| Carattere | Significato |
| ^ | Inizio riga |
| $ | Fine riga |
| ? | Il carattere precedente è opzionale |
| . | Qualsiasi singolo carattere |
| ( ) | Racchiude una sezione dello schema in un sottoschema |
| - | Raggruppa tutti i caratteri tra due letterali |
| + | Uno o più elementi di quelli precedenti |
| {n} | Ripete n volte |
| | | Separa stringhe letterali alternative |
| |
| * | 0 o più elementi precedenti |
| {n1,n2} | Specifica un intervallo di ripetizioni |
| [] | RAcchiude un set di caratteri opzionali |
| [^] | Racchiude un set di caratteri opzionali che non si devono trovare nella stringa |
Non stiamo parlando di noccioline, lo so, è un argomento molto complesso, vediamo se qualche esempio può essere utile per capire qualche cosa.
Avete presente le sigle per indicare la provincia, ad esempio RM ?
La regex sarà così ^[A-Z]{2}$ ossia una stringa composta da 2 caratteri maiuscoli
Un indirizzo mail ?
.+@.+\.(com|net|it) ossia una stringa che contiene qualsiasi carattere letterale, una chiocciola, un punto(e qui usiamo l'escape) e un provider che termina con com o net o it.
con un pò di pratica possiamo arrivare ad utilizzare questo strumento veramente potente per i nostri sciptini.
come fare per utilizzarli ?
E' possibile confrontare la stringa che c'interessa con la regex attraverso la funzione ereg()
ad esempio se vogliamo verificare che un dato numero sia un codice postale dovremo comportarci nel seguente modo
- Codice: Seleziona tutto
I codici sono visibili solo agli utenti di Atlantide, registrati e avrai pieno accesso alle nostre risorse
utilizziamo var_dump() per vedere i risultati di $result e $regs
