..


Sponsede Lenker

Regular Expressions PCRE funksjoner (og forskjeller med POSIX-funksjoner)

Artikkel skrevet av Max Bossi
Side 1 av 4

Vi hadde allerede nevnt et par dager siden gjennom sidene i bloggen vår, men i dag jeg ønsker å undersøke et tema som jeg tror vil være av interesse for tusenvis av utviklere - som meg - daglig bruk PHP til å utvikle sine nettapplikasjoner.

Fra og med versjon 5.3 av PHP, faktisk, vil utviklere som ønsker å utnytte potensialet i regulære uttrykk ikke kunne bruke POSIX funksjoner (for å forstå ereg () og familie), men må, av nødvendighet, bruk PCRE funksjoner (Perl Compatible Regular uttrykk), for eksempel preg_match () .

Den PCRE funksjoner innebygd i PHP tillate deg å bruke syntaksen til Perl regulære uttrykk er typisk for (mer presist, gir gjeldende implementering støtte til syntaksen til Perl 5.005), som er litt forskjellig fra POSIX funksjoner. For mer informasjon om syntaksen til PCRE er mulig å konsultere manualen tilgjengelig på den offisielle nettsiden PCRE.org.

Sammenligninger: den preg_match ()

Hvis du ønsker å foreta en sammenligning mellom en streng og et mønster (en modell skriftlig i form av regulære uttrykk) må bruke preg_match (), som faktisk erstatter ereg () og eregi ().

Ved å bruke preg_match () er, i vanlig, ganske enkelt: du passerer funksjonen mønsteret og strengen å sjekke. Hvis mønsteret er fornøyd, returnerer funksjonen 1 hvis 0 (eller USANN hvis en feil).

Faktisk migrere fra ereg () er ikke komplisert ting. Du vil trenge noen små triks i utformingen av mønsteret.

Her er et eksempel:

 



 <Php







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



  



 echo "Found";







 Else {}



  



 echo "ikke funnet";







 }







 ?>

 
Dette er den samme:
 



 <Php







 if (eregi ('mrwebmaster', 'Leve MrWebmaster!')) {



  



 echo "Found";







 Else {}



  



 echo "ikke funnet";







 }







 ?>

 

I vårt enkle eksempel på bruk av preg_match () brukte vi strengen som et mønster

 



 / Mrwebmaster / s

 
Vi ser syntaksen:
  • / ... / - Avgrense begynnelsen og slutten av uttrykket;
  • mrwebmaster - er en enkel streng som du vil bekrefte tilstedeværelse i teksten passerte som andre argument;
  • i - "i" etter stengetid delimiter indikerer at søket ikke skal være store og små bokstaver (nøyaktig slik det var med eregi ()). Teknisk sett er dette "i" en modifikator, på denne siden en fullstendig liste over modifikatorer tillatt i syntaksen til PCRE.

Forskjellen med ereg ()

Som du kan se forskjellen med ereg () er ikke mye, la oss oppsummere dem kort:

  • bruk av skilletegn / ... / (faktisk du kan bruke andre tegn som skilletegn, men skråstreken er den vanlige valg);
  • case-insensitive versjon (eregi ()) er erstattet med bruk av "i" etter stengetid skilletegn;
  • tilstedeværelsen av / tegnet i mønsteret vil kreve (hvis du er vant til skråstrek som skilletegn) escape (\ /) for ikke å forveksles med skilletegn;
  • Det er noen marginale forskjeller i forvaltningen av ASCII-tegn (POSIX funksjonene, i motsetning til PCRE godta numeriske ASCII-tegn: for eksempel tallet 10 tilsvarer en ny linje og vognretur 13, vice versa med PCRE funksjoner. 10 representerer utelukkende nummeret ti).
  • funksjon ereg () innrømmer kun tre parametere (mønster, tekst som skal sjekkes og eventuelt til en matrise holde resultatene) og preg_match () innrømmer fem (de to første, har vi allerede sett, er nødvendig, de tre andre er valgfrie );

På bakgrunn av ovenstående (og forskjeller som har blitt nevnt) vi fortsatt anser (delvis) lyd teoretiske forklaringer om syntaksen til regulære uttrykk kan finnes på denne siden av artikkelen "Regular Expressions i PHP" dedikert til den gamle POSIX funksjoner .

I samme kategori ...
E-Learning
Linux (Course) Linux (Course)
Komplett guide til open-source system. Starter fra 49 €.
MySQL (Course) MySQL (Course)
Forvaltning av open-source database. Starter fra 39 €.
PHP (Course) PHP (Course)
Full kurs for å lage dynamiske nettsider. Starter fra 49 €.
Sponsede Lenker