..


Sponzorované odkazy

PCRE funkcie pre regulárne výrazy (a rozdiely s funkciami POSIX)

Článok napísal Max Bossi
Strana 1 z 4

Mali sme už naznačili v minulých dňoch na stránkach nášho blogu, ale dnes by som chcel preskúmať témy, ktoré verím budú zaujímať pre tisíce vývojárov - ako ja - každodenné použitie PHP rozvíjať svoje webové aplikácie.

Od verzie 5.3 pre PHP, v skutočnosti, môžu vývojári, ktorí chcú využiť potenciál regulárnych výrazov už využívať funkcie POSIX (tak povediac ereg () a rodiny), ale musí nutne použiť funkcie PCRE (Perl kompatibilný Pravidelné výrazy), napríklad, preg_match () .

PCRE funkcie vstavané do PHP vám umožní použiť typické syntax regulárnych výrazov jazyka Perl (presnejšie povedané, súčasná implementácia poskytuje podporu syntaxe Perl 5.005), ktorá je mierne odlišná od funkcie POSIX. Pre viac informácií o syntaxi PCRE je možné konzultovať príručky k dispozícii na oficiálnej internetovej stránke PCRE.org.

Porovnanie: preg_match ()

Ak chcete vykonať porovnanie medzi reťazcami a vzor (model písaná vo forme regulárnych výrazov), budete musieť použiť preg_match (), ktoré v skutočnosti nahradiť ereg () a eregi ().

Pomocou preg_match () je v bežnom používaní, veľmi jednoduchý: zložiť funkciu vzor a reťazec pre kontrolu. Ak je model je presvedčený, že funkcia vráti 1, ak 0 (alebo FALSE v prípade chyby).

V skutočnosti migráciu z ereg () nie je zložitá vec. Budete potrebovať trochu vynaliezavosti pri formulácii vzoru.

Tu je príklad:

 



 <? Php







 if (preg_match ("/ mrwebmaster / i", "Nech žije MrWebmaster!")) {



  



 echo "nájdený";







 Else {}



  



 echo "nebol nájdený";







 }







 >

 
To je rovnaký:
 



 <? Php







 if (eregi ("mrwebmaster", "Nech žije MrWebmaster!")) {



  



 echo "nájdený";







 Else {}



  



 echo "nebol nájdený";







 }







 >

 

V našom jednoduchom príklade použitie preg_match () sme použili reťazec ako vzor

 



 / Mrwebmaster / s

 
Pozrime sa, syntax:
  • / ... / - Vymedzenie začiatku a na konci výrazu;
  • mrwebmaster - je jednoduchý reťazec, ktorý chcete skontrolovať text odovzdaný ako druhý argument;
  • i - "i" po uzavretí oddeľovač znamená, že vyhľadávanie by nemala byť veľká a malé písmená (rovnako ako tomu bolo v pomocou funkcie eregi ()). Technicky to "ja" je modifikátor, na tejto stránke kompletný zoznam modifikátorov povolené v syntaxi PCRE.

Na rozdiel od ereg ()

Ako môžete vidieť rozdiel ereg () nie je veľa, poďme zhrnúť stručne:

  • použitie oddeľovača / ... / (v skutočnosti je možné použiť aj iné znaky, ako oddeľovač, ale lomítkom je obvyklé voľby);
  • case-insensitive verzia (eregi ()) sa nahrádza použitie "i" po uzavretí oddeľovač;
  • Prítomnosť znaku / vo vzorke bude vyžadovať (ak ste zvyknutí na lomítko ako oddeľovač), Escape (\ /), aby nedošlo k zámene s oddeľovače;
  • Tam sú niektoré menšie rozdiely v hospodárení s ASCII znakov (POSIX funkcie, na rozdiel od PCRE prijať číselné ASCII znaky:. Napr. Zodpovedá číslu 10 a 13 novej rady návrat, naopak s PCRE funkciou 10 predstavuje iba číslo desať).
  • funkciu ereg () prijíma iba tri parametre (vzor, ​​text ku kontrole a prípadne aj pole pre uloženie výsledkov) a preg_match () priznáva, päť (prvé dva, sme už videli, je potrebné, ďalšie tri sú voliteľné );

Na základe vyššie uvedených (a rozdiely, ktoré boli spomenuté), môžeme považovať opäť (čiastočne) platná teoretické vysvetlenie o syntaxi regulárnych výrazov nájdete na tejto stránke v článku "regulárnych výrazov v PHP", venované starým POSIX funkcie .

V rovnakej kategórii ...
E-Learning
Linux (kurz) Linux (kurz)
Kompletný sprievodca pre open-source systému. Od 49 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databázy. Od 39 €.
PHP (kurz) PHP (kurz)
Celý kurz pre vytváranie dynamických webov. Od 49 €.
Sponzorované odkazy