..


Link-uri sponsorizate

PCRE funcţiile pentru expresii regulate (şi diferenţe cu functii POSIX)

Articol scris de Max Bossi
Pagina 1 din 4

Am avut deja sugerat în ultimele zile, prin paginile de blog-ul nostru, dar astăzi aş dori să investigheze un subiect care cred că va fi de interes pentru mii de dezvoltatori - ca mine - in fiecare zi folosi PHP pentru a dezvolta aplicaţii de web.

Incepand cu versiunea 5.3 a PHP, de fapt, dezvoltatorii care doresc să exploateze potenţialul de expresii regulate, nu mai poate face uz de functii POSIX (ca să spunem aşa ereg () şi de familie), dar trebuie, în mod necesar, utilizează funcţiile PCRE (Perl Regular compatibile expresii), de exemplu, preg_match () .

Funcţiile PCRE construit in PHP vă permite să utilizaţi sintaxă tipică expresii regulate din Perl (mai precis, la punerea în aplicare actual oferă sprijin pentru sintaxa Perl 5.005), care este uşor diferită de cea a funcţiilor POSIX. Pentru mai multe informaţii privind sintaxa PCRE este posibil să se consulte manualul disponibile pe site-ul oficial PCRE.org.

Comparaţii: preg_match ()

Dacă doriţi să faceţi o comparaţie între un şir de caractere şi un model (un model scris sub formă de expresii regulate) va trebui să utilizaţi preg_match (), care, de fapt, înlocuiţi ereg () şi eregi ().

Utilizarea preg_match () este în uz comun, destul de simplă: vă treci funcţia de modelul şi şir pentru a verifica. În cazul în care modelul este îndeplinită, funcţia returnează 1, dacă 0 (sau FALSE în cazul în care o eroare).

De fapt, migrarea de la ereg () nu este lucru complicat. Veţi avea nevoie de unele putina ingeniozitate în elaborarea modelului.

Iată un exemplu:

 



 <? Php







 if (preg_match ("/ mrwebmaster / i ',' MrWebmaster Trăiască!")) {



  



 echo "Found";







 Else {}



  



 echo "Nu a fost gasit";







 }







 ?>

 
Aceasta este aceeaşi:
 



 <? Php







 dacă (eregi ('mrwebmaster', 'MrWebmaster Trăiască! ")) {



  



 echo "Found";







 Else {}



  



 echo "Nu a fost gasit";







 }







 ?>

 

În exemplul nostru simplu de a folosi preg_match () am folosit string ca un model

 



 / Mrwebmaster / s

 
Să vedem sintaxa:
  • / ... / - Delimitarea la începutul şi la sfârşitul exprimare;
  • mrwebmaster - este un şir simplu care doriţi să verificaţi textul trecut ca al doilea argument;
  • i - "i", după închiderea delimitatorul indică faptul că căutare NU ar trebui să fie sensibil la majuscule (la fel cum a fost realizat prin utilizarea funcţiei eregi ()). Punct de vedere tehnic acest lucru "i" este un modificator, în această pagină o listă completă de modificatori permis în sintaxa PCRE.

Diferenţa cu ereg ()

După cum puteţi vedea diferenţa cu ereg () nu sunt o mulţime, haideţi să le rezuma pe scurt:

  • utilizarea de delimitatori / ... / (de fapt, puteţi utiliza alte caractere ca delimitator, dar slash este alegerea obişnuită);
  • case-insensitive versiune (eregi ()) se înlocuieşte cu utilizarea de "i" după închiderea delimitatorul;
  • prezenţa caracterului / în model va solicita (dacă sunt utilizate pentru a reduce ca delimitator) de evacuare (\ /), pentru a nu fi confundată cu delimitatorii;
  • Există câteva diferenţe minore în gestionarea de caractere ASCII (funcţiile POSIX, spre deosebire de PCRE accepta caractere numerice ASCII:. De exemplu, corespunde cu numărul 10 şi 13 noi retur de car linie; vice-versa cu funcţiile PCRE 10 reprezintă exclusiv numarul zece).
  • ereg function () acceptă numai trei parametri (model, textul care urmează să fie verificate şi, opţional, o matrice de a organiza rezultatele) şi preg_match () admite cinci (primele două, am văzut deja, sunt necesare, celelalte trei sunt opţionale );

Pe baza celor de mai sus (şi diferenţele care au fost menţionate), putem considera din nou (parţial) explicaţii valabile teoretice despre sintaxa expresiilor regulate pot fi găsite la această pagină a articolului "expresiilor regulate în PHP", dedicat vechile functii POSIX .

În aceeaşi categorie ...
E-Learning
Linux (Curs) Linux (Curs)
Ghid complet pentru open-source de sistem. De la 49 €.
MySQL (Curs) MySQL (Curs)
De gestionare a bazei de date open-source. De la 39 €.
PHP (Curs) PHP (Curs)
Ciclu complet pentru crearea de site-uri Web dinamice. De la 49 €.
Link-uri sponsorizate