Expresiile regulate (regex) sunt un sir de caractere sablon care descriu multimea cuvintelor posibile care pot fi formate cu acele caractere, respectand anumite reguli. Aceste expresii regulate folosesc paranteze (rotunde, patrate, acolade) prin care formeaza regulile de formare a cuvintelor. Utilitatea cea mai frecventa a unei expresii regulate consta în a recunoaste daca un sir contine sau nu cuvinte sau sub-sir care pot fi formate prin expresia regulata respectiva.
Sa presupunem ca doriti sa specificati un sir care poate include orice vocala. Puteti face aceasta folosind expresia regulata [aeiou]. Prin includerea valorilor posibile între paranteze, formati o expresie regulata echivalenta cu formularea "alege oricare din aceste valori". Daca doriti sa permiteti si utilizarea, majusculelor, puteti scrie [aeiouAEIOU].
Sa presupunem ca doriti sa specificati un sir care poate include orice caracter scris cu minuscule. Puteti scrie: [abcdefghijklmnopqrstuvwxyz]. Sau puteti folosi o forma mai compacta [a-z], unde prin cratima se întelege "o serie de caractere consecutive".
Sa presupunem ca doriti sa specificati intr-o expresie regulata sirurile "sat", "mat" si "lat". Pentru aceasta, aveti nevoie de expresia regulata [sml]at. Semnificatia acestei expresii regulate este urmatoarea: "alege oricare din literele 's', 'm' si 'l' si scrie dupa litera respectiva literele 'at'".
Daca un accent circumflex (^) este primul simbol mentionat între parantezele drepte, acesta are ca efect inversarea semnificatiei expresiei regulate plasate între paranteze.
Pentru a specifica faptul ca o expresie regulata se poate repeta, expresia regulat va fi urmata de o pereche de acolade, care includ limitele superioara si inferioara ale repetitiei.
Pentru a specifica repetarea mai multor parti ale unei expresii regulate, includeti partile respective între paranteze rotunde.
Pentru a simplifica scrierea de reguli intr-o expresie regulata se folosesc anumite caractere "speciale"
Sa presupunem ca doriti sa reprezentati o înmultire intre doua numere, puteti obtine ceva de genul [0-9]*[0-9]. Totusi, aceasta expresie regulata nu are semnificatia dorita, deoarece '*' este un factor de repetitie, nu un caracter dintr-un sir. Pentru a dezactiva semnificatia speciala a caracterului '*', trebuie sa-l prefixati cu un caracter backslash: [0-9]\*[0-9].
Pentru a specifica faptul ca o expresie regulata corespunde numai unui sub-sir care include anumite caractere la inceput, prefixati expresia regulata cu un accent circumflex "^". De exemplu, expresia regulata ^[sml]at corespunde sub-sirurilor "sat", "mat" sau "lat" numai daca acestea apar la începutul sirului subiect.
Similar, pentru a arata ca o expresie regulata corespunde numai unui sub-sir care include anumite caractere la sfarsit, anexati la expresia regulata un simbol al dolarului "$". De exemplu, expresia regulata [sml]at$ corespunde sirurilor "sat", "mat" sau "lat" numai daca acestea apar la sfârsitul sirului subiect.
Iata o lista cu mai multe caractere speciale si rolul lor in expresiile regulate:
PHP include numeroase functii care lucreaza cu expresii regulate. Tabelul urmator descrie unele din aceste functii.
Functii PHP pentru expresii regulate | |
Functie | Descriere |
ereg | - Executa o identificare cu o expresie regulata (anulata incepand cu versiunea PHP 5.3) |
ereg_replace | - Înlocuieste un sub-sir care corespunde unei expresii regulate (anulata incepand cu versiunea PHP 5.3 - in locul ei poate fi folosita preg_replace) |
eregi | - Executa o identificare cu o expresie regulata insensibila la diferenta între majuscule si minuscule (anulata incepand cu versiunea PHP 5.3) |
eregi_replace | - Înlocuieste un sub-sir care corespunde unei expresii regulate insensibile la diferenta între majuscule si minuscule (anulata incepand cu versiunea PHP 5.3 - in locul ei poate fi folosita preg_replace) |
preg_replace | - Cauta in sir caracterele sau sablonul care se potriveste cu expresia regulata din functie si o inlocuieste cu alte valori date |
split | - Divide un sir într-un tablou folosind o expresie regulata (anulata incepand cu versiunea PHP 5.3 - in locul ei poate fi folosita preg_split) |
sql_regcase | - Creaza o expresie regulata, insensibila la diferenta între majuscule si minuscule, dintr-un sir care contine o expresie regulata (anulata incepand cu versiunea PHP 5.3) |
<input type="number" name="points" min="5" max="80" />
#id { filter:alpha(opacity=40); /* for IE */ opacity:0.4; }
var num = 12.84567; alert( num.toPrecision(3) ); // 12.8
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net"); shuffle($lang); var_export($lang); // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
She is the best in our class. - Ea este cea mai buna din clasa noastra.
Él es el mejor en nuestra clase. - El este cel mai bun din clasa noastra.