<?php $string = "eu cghjb asd gigiigj@yahoo.com si asda"; $pattern = '/cgh/'; preg_match($pattern, $string, $return); print_r($return); ?> $string reprezinta textul din care extragem informatii dupa expresiile regulate. $pattern reprezinta variabila continand expresiile regulate. Neaparat expresiile se scriu intre linii oblice de forma /[expresie]/. Scriptul de mai sus va returna cgh ca dovada ca a fost gasit in string. Simbolul steluta * <?php $string = "eu cuuuuub asd gigiigj@yahoo.com si asda"; $pattern = '/cu*/'; preg_match($pattern, $string, $return); print_r($return); ?> Script-ul va afisa "cuuuuu". Prin steluta, se preiau partile care incep cu caracterul "c" si continua cu zero sau mai multe caractere "u". Asemanator este si simbolul plus + Singura diferenta este ca textul preluat trebuie sa aiba cel putin un caracter u dupa caracterul initial "c". Semnul intrebarii - ? Ne spune ca pot sa fie caractere u dupa caracterul initial c sau pot sa lipseasca. Expresii din paranteze patrate Tin locul anumitor caractere. <?php $string = "eu jksdfb asd gigiigj@yahoo.com si asda"; $pattern = '/j[a-z]/'; preg_match($pattern, $string, $return); print_r($return); ?> In pattern avem expresia "j[a-z]". Deci se cauta string-uri care incep cu litera j si continua cu orice alta litera (una singura). In script-ul de mai sus se va afisa "jk". Asta pentru ca in string avem "jksdfb". Incepe cu j si sa se mai afiseze inca o litera [a-z] dupa j in cazul in care aceasta exista. Daca dorim sa preluam tot cuvantul "jksdfb" folosim expresia "j[a-z]*". Daca o luam logic, cerem sa ni se afiseze ceva care incepe cu litera j, si continua cu orice alta litera de la a la z. Expresia se opreste la spatiul dintre cuvinte deoarece acesta nu este cuprins in [a-z]. Expresiile din paranteze patrate sunt case sensitive. De exemplu daca in stringul nostru ar fi "jksDfb". S-ar afisa doar "jks" deoarece D nu este in [a-z] ci este cuprins in [A-Z]. Pentru a fi afisat intregul cuvant "jksDfb" punem expresia de forma "j[a-zA-Z]*". Aceasta inseamna ca poate continua cu oricate caractere cuprinse atat in [a-z] cat si in [A-Z]. Pentru numere punem la fel conditia [0-9]. Daca avem textul "jk2sDfb", fara conditia [0-9] ar fi preluat doar "jk". Oprindu-se la "2". Pentru aceasta expresia arata de forma "j[a-zA-Z0-9]*". Caractere multiple Pentru caractere multiple scriem numarul tipului de caractere in acolade { }. Spre exemplu. Avand string-ul "daaa". Folosim expresia "da{3}" pentru a marca faptul ca dorim partile care incep cu litera d si continua cu exact 3 litere de "a". De asemenea putem folosi "da{2,4}" pentru a marca faptul ca dorim partile care incep cu litera d si continua cu 2,3,4 (intre doua sau patru) litere de a. Sau putem folosi "da{2,}" pentru a marca faptul ca dorim sa aiba 2 sau mai multe litere de "a". Ca demonstratie practica putem folosi expresiile regulate sa extragem e-mail-uri dintr-un string. <?php $string = "eu cghjb asd gig_iigj@yahoo.com si asda"; $pattern = '/[a-zA-Z0-9-_.]+@[a-zA-Z0-9]+.[a-zA-z]{2,4}/'; preg_match($pattern, $string, $return); print_r($return); ?> Observand pattern-ul am cerut asa: String-uri care incep cu orice litera cuprinsa intre a-z sau A-Z sau orice numar de la 0 la 9 Sau mai pot contine simbolul minus "-" sau simbolul underline "_" sau punct "." [a-zA-Z0-9-_.] De asemenea simbolul plus + adaugat dupa "[a-zA-Z0-9-_.]" Spune ca poate continua cu cel putin inca o litera cuprinsa intre a-zA-Z0-9 sau "-" , "_" , ".". DAR va avea la un moment dat un simbol "@" urmat de caractere cuprinse intre a-z, A-Z sau 0-9 @[a-zA-Z0-9]+ Si in continuare trebuie sa contina si un punct "." urmat de 2, 3 sau 4 caractere cuprinse intre [a-z], [A-Z]. Prin urmare. La e-mail-ul: gig_iigj@yahoo.com si expresia "[a-zA-Z0-9-_.]+@[a-zA-Z0-9]+.[a-zA-z]{2,4}" Expresia: [a-zA-Z0-9-_.]+ Tine loc de "gig_iigj" Expresia: "@" Este chiar "@" Expresia: [a-zA-Z0-9]+ Reprezinta "yahoo". Expresia: "." este chiar punctul de la .com spre exemplu Expresia: [a-zA-z]{2,4} reprezinta com din ".com" Care poate fi ".info" sau ".uk" de aceea trebuie sa fie la un range de caractere de minim 2 si maxim 4. Mai exista si domenii cu extensii duble . Cum ar fi .co.uk sau .us.com asa ca puteti folosi expresia [a-zA-z.]{2,6}