..


Sponsorerede links

PCRE regulære udtryk funktioner (og forskelle med POSIX funktioner)

Artikel skrevet af Max Bossi
Side 1 af 4

Vi havde allerede antydet i de seneste dage gennem siderne i vores blog, men i dag vil jeg gerne undersøge et emne, som jeg tror vil være af interesse for tusindvis af udviklere - ligesom mig - hver dag bruge PHP til at udvikle deres web-applikationer.

Fra og med version 5.3 af PHP, i virkeligheden, kan udviklere, der ønsker at udnytte potentialet i regulære udtryk ikke længere gøre brug af POSIX funktioner (så at sige ereg () og familie), men skal nødvendigvis bruge de funktioner PCRE (Perl Compatible Regular udtryk), for eksempel, preg_match () .

Den PCRE funktioner indbygget i PHP giver dig mulighed for at bruge den typiske regulære udtryk syntaks i Perl (mere præcist, den nuværende gennemførelse giver støtte til syntaksen i Perl 5,005), hvilket er lidt forskelligt fra POSIX funktioner. For mere information om syntaksen i PCRE er muligt at konsultere manualen til rådighed på den officielle hjemmeside PCRE.org.

Sammenligninger: det preg_match ()

Hvis du ønsker at foretage en sammenligning mellem en streng og et mønster (en model skrevet i form af regulære udtryk) bliver nødt til at bruge preg_match (), at det i virkeligheden erstatte ereg () og eregi ().

Brug preg_match () er til fælles brug, ganske enkel: du passerer den funktion, mønster og strengen for at kontrollere. Hvis mønsteret er opfyldt, funktionen returnerer 1 hvis 0 (eller FALSE hvis en fejl).

Faktisk migrere fra ereg () ikke er kompliceret ting. Du får brug for nogle lidt opfindsomhed i formuleringen af ​​mønstret.

Her er et eksempel:

 



 <? Php







 if (preg_match ('/ mrwebmaster / i', 'Længe leve MrWebmaster!')) {



  



 echo "fundet";







 Else {}



  



 echo "ikke fundet";







 }







 ?>

 
Dette er den samme:
 



 <? Php







 if (eregi ('mrwebmaster', 'Længe leve MrWebmaster!')) {



  



 echo "fundet";







 Else {}



  



 echo "ikke fundet";







 }







 ?>

 

I vores simple eksempel på anvendelse af preg_match () brugte vi strengen som et mønster

 



 / Mrwebmaster / s

 
Lad os se syntaksen:
  • / ... / - Afgrænse begyndelsen og slutningen af udtrykket;
  • mrwebmaster - er en simpel streng, som du vil kontrollere teksten gik som det andet argument;
  • i - "i" efter lukketid afgrænser indikerer, at søgningen skal IKKE store og små bogstaver (lige som det blev gjort ved hjælp af funktionen eregi ()). Teknisk dette "jeg" er en modifier, i denne side en komplet liste over modifikatorer tilladt i syntaksen i PCRE.

Forskellen med ereg ()

Som du kan se forskellen med ereg () er ikke en masse, lad os opsummere dem kort:

  • brug af afgrænsere / ... / (faktisk kan du bruge andre tegn som skilletegn, men skråstregen er den sædvanlige valg);
  • store og små bogstaver version (eregi ()) er erstattet af anvendelse af "i" efter lukketid afgrænsningstegn;
  • tilstedeværelsen af den karakter / i mønstret vil kræve (hvis du er vant til skråstreg som separator) flugt (\ /) for ikke at forveksle med afgrænsere;
  • Der er nogle mindre forskelle i forvaltningen af ASCII-tegn (POSIX funktioner, i modsætning til PCRE acceptere numeriske ASCII-tegn:. Eksempel svarer til nummer 10 og 13 nye linje vognretur; vice versa med PCRE funktioner 10 repræsenterer udelukkende nummer ti).
  • funktionen ereg () accepterer kun tre parametre (mønster, tekst, der skal kontrolleres og eventuelt et array til at holde resultaterne) og preg_match () indrømmer fem (de to første, vi allerede har set, er påkrævet, de tre andre er valgfri );

På grundlag af ovenstående (og forskelle, der er blevet nævnt), vi kan overveje igen (delvist) gyldige teoretiske forklaringer om syntaksen i regulære udtryk kan findes på denne side af artiklen "Regular Expressions i PHP" dedikeret til den gamle POSIX funktioner .

I den samme kategori ...
E-Learning
Linux (Kursus) Linux (Kursus)
Komplet guide til open source-system. Fra 49 €.
MySQL (Kursus) MySQL (Kursus)
Forvaltning af open source-database. Fra 39 €.
PHP (Kursus) PHP (Kursus)
Fuld kursus for at skabe dynamiske web-sites. Fra 49 €.
Sponsorerede links