..


Enllaços patrocinats

Expressions regulars de les funcions PCRE (i les diferències amb les funcions POSIX)

Article escrit per Max Bossi
Pàgina 1 de 4

Vam haver ja s'ha esmentat fa uns dies a través de les pàgines del nostre bloc, però avui m'agradaria investigar un tema que crec que serà d'interès per a milers de desenvolupadors - com jo - cada dia utilitzar PHP per desenvolupar aplicacions web.

Des de la versió 5.3 de PHP, de fet, els desenvolupadors que volen explotar el potencial de les expressions regulars no serà capaç d'utilitzar les funcions POSIX (per entendre EREG () i de la família), sinó que ha, necessàriament, utilitzar les funcions de PCRE (Perl Compatible Regular expressions), per exemple, preg_match () .

(L'article continua més avall ...)

Les funcions PCRE integrat en PHP et permeten utilitzar la sintaxi d'expressions regulars de Perl típica de la (més precisament, la implementació actual ofereix suport a la sintaxi de Perl 5005), que és lleugerament diferent a la de les funcions POSIX. Per més informació sobre la sintaxi de PCRE és possible consultar el manual d' disponibles al lloc web oficial PCRE.org.

Comparacions: el preg_match ()

Si voleu fer una comparació entre una cadena i un patró (un model d'escrit en forma d'expressions regulars) haurà d'utilitzar preg_match () que, de fet, substitueix a EREG () i eregi ().

Utilitzant preg_match () és, en comú, més ben simple: es passa a la funció del patró i la cadena de control. Si el patró es compleix, la funció retorna 1 si 0 (o FALSE si ocorre un error).

De fet, la migració de EREG () no és cosa complicada. Es necessita una mica de petit truc en la formulació del model.

Heus aquí un exemple:

 



 <Php







 if (preg_match ('/ mrwebmaster / i', 'MrWebmaster Viva! ")) {



  



 echo "trobat";







 Else {}



  



 echo "no trobat";







 }







 >

 
Aquesta és la mateixa:
 



 <Php







 if (eregi ("mrwebmaster ',' MrWebmaster Viva!")) {



  



 echo "trobat";







 Else {}



  



 echo "no trobat";







 }







 >

 

En el nostre exemple senzill d'utilitzar preg_match () que utilitza la cadena com un patró

 



 / Mrwebmaster / s

 
Veiem la sintaxi:
  • / ... / - Delimitar el principi i el final de l'expressió;
  • mrwebmaster - és una cadena simple que desitja per a verificar la presència en el text que es passa com a segon argument;
  • i - "i" després que el delimitador de tancament indica que la recerca no s'ha de distingir entre majúscules i minúscules (tal i com va ser amb el eregi ()). Tècnicament, aquest "jo" és un modificador, en aquesta pàgina una llista completa dels modificadors permesos en la sintaxi de PCRE.

La diferència amb EREG ()

Com es pot veure la diferència amb EREG () no són molt, anem a resumir breument:

  • ús dels delimitadors / ... / (en realitat es poden utilitzar altres caràcters com a delimitador, però la barra és l'elecció habitual);
  • entre majúscules i minúscules versió (eregi ()) se substitueix per l'ús de "i" després que el delimitador de tancament;
  • la presència de la naturalesa / en el patró es requereix (si s'utilitzen per retallar com delimitadors) escapament (\ /) per tal de no confondre amb els delimitadors;
  • Hi ha diferències mínimes en el maneig de caràcters ASCII (les funcions POSIX, a diferència de la PCRE acceptar els caràcters ASCII numèrics: per exemple, el número 10 correspon a una nova línia i retorn de carro 13; viceversa amb les funcions PCRE. 10 representa exclusivament el nombre deu).
  • el EREG function () només admet tres paràmetres (patró, text a ser revisat i, opcionalment, un arranjament que conté els resultats) i preg_match () admet cinc (les dues primeres, ja hem vist, és necessari, els altres tres són opcionals );

Sobre la base de l'anterior (i les diferències que s'han esmentat) seguim considerant (parcialment) el so explicacions teòriques sobre la sintaxi de les expressions regulars es poden trobar en aquesta pàgina l'article "Les expressions regulars en PHP", dedicat a l'antiga funcions POSIX .

A la mateixa categoria ...
E-Learning
Curs de Linux Curs de Linux
Guia completa de codi obert del sistema. A partir de 49 €.
Curs de MySQL Curs de MySQL
Gestió de base de dades de codi obert. A partir de 39 €.
Curs de PHP Curs de PHP
Cicle complet per a la creació de llocs web dinàmics. A partir de 49 €.
Enllaços patrocinats