..


Sponzorované odkazy

PCRE funkce pro regulární výrazy (a rozdíly s funkcemi POSIX)

Článek napsal Max Bossi
Strana 1 z 4

Měli jsme již naznačili v minulých dnech na stránkách našeho blogu, ale dnes bych chtěl prozkoumat téma, které věřím budou zajímat pro tisíce vývojářů - jako já - každodenní použití PHP rozvíjet své webové aplikace.

Od verze 5.3 pro PHP, ve skutečnosti, mohou vývojáři, kteří chtějí využít potenciálu regulárních výrazů již využívat funkce POSIX (tak říkajíc ereg () a rodiny), ale musí nutně použít funkce PCRE (Perl kompatibilní Pravidelné výrazy), například, preg_match () .

PCRE funkce vestavěné do PHP vám umožní použít typické syntaxi regulárních výrazů jazyka Perl (přesněji řečeno, současná implementace poskytuje podporu syntaxe Perl 5.005), která je mírně odlišná od funkce POSIX. Pro více informací o syntaxi PCRE je možno konzultovat příručky k dispozici na oficiální internetové stránce PCRE.org.

Srovnání: preg_match ()

Pokud chcete provést srovnání mezi řetězci a vzor (model psána ve formě regulárních výrazů), budete muset použít preg_match (), které ve skutečnosti nahradit ereg () a eregi ().

Pomocí preg_match () je v běžném používání, velmi jednoduchý: složit funkci vzor a řetězec pro kontrolu. Je-li model je přesvědčen, že funkce vrátí 1, pokud 0 (nebo FALSE v případě chyby).

Ve skutečnosti migraci z ereg () není složitá věc. Budete potřebovat trochu vynalézavosti při formulaci vzoru.

Zde je příklad:

 



 <? Php







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



  



 echo "nalezen";







 Else {}



  



 echo "nebyl nalezen";







 }







 >

 
To je stejný:
 



 <? Php







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



  



 echo "nalezen";







 Else {}



  



 echo "nebyl nalezen";







 }







 >

 

V našem jednoduchém příkladu použití preg_match () jsme použili řetězec jako vzor

 



 / Mrwebmaster / s

 
Podívejme se, syntax:
  • / ... / - Vymezení začátku a na konci výrazu;
  • mrwebmaster - je jednoduchý řetězec, který chcete zkontrolovat text předán jako druhý argument;
  • i - "i" po uzavření oddělovač znamená, že vyhledávání by neměla být velká a malá písmena (stejně jako tomu bylo v pomocí funkce eregi ()). Technicky to "já" je modifikátor, na této stránce kompletní seznam modifikátorů povoleno v syntaxi PCRE.

Na rozdíl od ereg ()

Jak můžete vidět rozdíl ereg () není mnoho, pojďme shrnout stručně:

  • použití oddělovače / ... / (ve skutečnosti je možné použít i jiné znaky, jako oddělovač, ale lomítkem je obvyklé volby);
  • case-insensitive verze (eregi ()) se nahrazuje použití "i" po uzavření oddělovač;
  • Přítomnost znaku / ve vzorku bude vyžadovat (pokud jste zvyklí na lomítko jako oddělovač), Escape (\ /), aby nedošlo k záměně s oddělovače;
  • Tam jsou některé menší rozdíly v hospodaření s ASCII znaků (POSIX funkce, na rozdíl od PCRE přijmout číselné ASCII znaky:. Např. odpovídá číslu 10 a 13 nové řady návrat, naopak s PCRE funkcí 10 představuje pouze číslo deset).
  • funkci ereg () přijímá pouze tři parametry (vzor, ​​text ke kontrole a případně i pole pro uložení výsledků) a preg_match () přiznává, pět (první dva, jsme již viděli, je nutné, další tři jsou volitelné );

Na základě výše uvedených (a rozdíly, které byly zmíněny), můžeme považovat opět (částečně) platná teoretické vysvětlení o syntaxi regulárních výrazů naleznete na této stránce v článku "regulárních výrazů v PHP", věnované starým POSIX funkce .

Ve stejné kategorii ...
E-Learning
Linux (kurz) Linux (kurz)
Kompletní průvodce pro open-source systému. Od 49 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databáze. Od 39 €.
PHP (kurz) PHP (kurz)
Celý kurz pro vytváření dynamických webů. Od 49 €.
Sponzorované odkazy