Guida sicurezza PHP e MySQL "Espressioni regolari in PHP" Introduzione In questa guida troverai una serie di comuni regular expression o espressioni regolari che puoi usare per verificare la pertinenza dei dati passati tramite i campi di un modulo web o all'interno di un url. La regular expression potrà essere inserita all'interno della funzione: preg_match( /Espressione regolare/, variabile da confrontare) oppure se il confronto non deve considerare minuscole o maisucole: preg_match( /Espressione regolare/i, variabile da confrontare) oppure all'interno di una qualsiasi altra funzione di php che richiede l'utilizzo di una regular expression. Le espressioni regolari più utilizzate 1) Controllo generico di un numero Per controllare se un determinato campo risulta essere un numero intero di n cifre (con n maggiore o uguale a 1), si può usare: [0-9]+ Esempi validi: 3, 44, 345, 996792 etc if (preg_match('/^[0-9]+$/',$numero)) { echo "Hai inserito un numero intero";
2) Controllo generico di una stringa senza spazi Per controllare se un determinato campo risulta essere un stringa alfanumerica senza spazi, quindi contenente sia numeri che lettere, costituita da n caratteri (con n maggiore o uguale a 1), si può usare: [a-z0-9]+ Esempi validi: a23, sde, 3sd5, 996a,72 etc $stringa = '123ciao'; if (preg_match('/^[a-z0-9]+$/',$numero)) { echo "Hai inserito una stringa alfanumerica"; 3) Controllo di una stringa di 5 caratteri Per controllare se un determinato campo risulta essere un stringa alfanumerica senza spazi, quindi contenente sia numeri che lettere, costituita esattamente da 5 caratteri, si può usare: [a-za-z0-9]{5 Esempi validi: A2323, 3sd52, 99634, etc $stringa = '123ciao'; if (preg_match('/^[a-za-z0-9]{5$/',$numero)) { echo "Hai inserito una stringa alfanumerica di 5 caratteri"; 3) Controllo di un nome Italiano Per controllare se un determinato campo risulta essere un nome italiano quindi senza caratteri accentati tipici di altre lingue, si può usare: [a-za-z]+[\ a-za-z]* Esempi validi: Luigi, pier angelo, etc $nome = 'Angelo'; if (preg_match('/^[a-z]+[\ a-z]*$/i',$nome)) { echo "Hai inserito un nome italiano valido";
3) Controllo di un nome straniero con particolari accenti Per controllare se un determinato campo risulta essere un nome straniero con particolari accenti è necessario inserirli nella lista dei possibili valori: [a-z]+[\ àâäàèêëèé etc a-z]* Esempi validi: Luigi, Angèlo, etc $nome = 'Angèlo'; if (preg_match('/^[a-z]+[\ àèìòùa-z]*$/i',$nome)) { echo "Hai inserito un nome valido valido"; 3) Controllo di un' email Per controllare se un determinato campo risulta essere un'email valida dal punto di vista formale, si può usare: [a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-\.]?[a-z0-9])+\.[a-z]{2,4 Esempi validi: a12@dd.com, aaa_bb@ii.com, 123@ddd.com etc $email = 'test@miosito.com'; if (preg_match('/^ [a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-\.]?[a-z0-9])+\.[a-z]{2,4$/',$email)) { echo "Hai inserito un'email formalmente valida"; 4) Controllo di un cap italiano Per controllare se un determinato campo risulta essere un codice di avviamento postale ossia costituito da 5 numeri, si può usare: [0-9]{5 Esempi validi: 35100 etc $cap = '35100'; if (preg_match('/^[0-9]{5$/',$cap)) { echo "Hai inserito un codice di avviamente postale valido";
5) Controllo di nome di dominio Per controllare se un determinato campo contiene un nome di dominio potenzialmente valido a lettere minuscole, tra quelli desiderati, si può usare: ^(http https):\/\/[a-z0-9\-\.]+\.[a-z]{2,6$ Esempi validi: http://www.pincopalla.com, https://pincopalla.it, etc $dominio = 'http://www.pincopalla.com/'; if (preg_match('/^(http https):\/\/[a-z0-9\-\.]+\.[a-z]{2,6$/',$dominio)) { echo "Hai inserito un indirizzo di sito web valido formalmente valido"; 6) Controllo di una data Per controllare se un determinato campo contiene una data nel formato gg/mm/aa, si può usare: [0-9]{1,2\/[0-9]{1,2\/[0-9]{2 Esempi validi: 1/01/18, 25/4/44, 03/11/82 etc $dataor = '10/02/19'; if (preg_match('/^[0-9]{1,2\/[0-9]{1,2\/[0-9]{2$/',$dataor)) { echo "Hai inserito una data formalmente valida"; 7) Controllo di una partita IVA Per controllare se un determinato campo contiene un partita IVA italiana: [0-9]{11 Esempi validi: 12345678901 $piva = '03558457845'; if (preg_match('/^[0-9]{11$/',$piva)) { echo "Hai inserito una patita iva valida"; Guida rapida alle espressioni regolari
NB: Con carattere si intende sia una lettera che un numero che un simbolo. Metacarattere - descrizione ^ - Inizio di una stringa $ - Fine di una stringa [a-z] - lettere dalla a alla z in minuscolo [A-Z] - lettere dalla A alla Z in maiuscolo [0-9] - numeri da 0 a 9? - zero o uno del precedente carattere o caratteri * - zero o più del precente caratteri o caratteri + - uno o più dei precedenti caratteri {n - n dei precente carattere o caratteri {n, - n o più del precente carattere o caratteri. - normalmente equivale ad un qualsiasi carattere escluso il carattere di nuova riga \n Se inserito all'interno delle parentesi quadre, corrisponde al simbolo punto. () - Raggruppa una serie di corripondenze, in un solo elemento. [ ] - Individua un set di possibili corrispondenza di caratteri.