..


Sponsorētās saites

PCRE regulāras izteiksmes funkcijas (un atšķirības ar POSIX funkcijas)

Raksts raksta Max Bossi
Lapa 1 no 4

Mums bija jau devis mājienu pēdējo dienu laikā, izmantojot mūsu blogu lapās, bet šodien es gribētu izpētīt tēmu, ka es uzskatu, ka būs interese tūkstošiem izstrādātāji - kā es, - katru dienu izmantot PHP, attīstīt savu tīmekļa lietojumprogrammas.

Sākot ar PHP 5,3 versiju, patiesībā, izstrādātājiem, kuri vēlas izmantot potenciālu, regulāras izteiksmes vairs nevar izmantot POSIX funkciju (tā runāt ereg () un ģimenes), bet tām obligāti, izmantojiet funkcijas PCRE (Perl Compatible Regular Expressions), piemēram, preg_match () .

PCRE funkcijas iebūvēts PHP ļauj izmantot tipisks regulāras izteiksmes sintaksi Perl (precīzāk, to pašreizējo īstenošanu nodrošina atbalstu sintaksi 5,005 Perl), kas ir nedaudz atšķiras no POSIX funkcijas. Lai iegūtu vairāk informācijas par sintaksi PCRE ir iespējams konsultēties rokasgrāmata pieejama oficiālajā mājas lapā PCRE.org.

Salīdzinājumi: preg_match ()

Ja vēlaties veikt salīdzinājumu starp string un paraugu (paraugs rakstīts kā regulāras izteiksmes) būs jāizmanto preg_match (), ka, patiesībā, aizstāt ereg () un eregi ().

Izmantojot preg_match () ir kopīgai lietošanai, pavisam vienkārša: jums iet funkciju modelis un string pārbaudīt. Ja modelis ir apmierināts, funkcija atgriež 1, ja 0 (vai FALSE, ja kļūda).

Patiesībā migrē no ereg () nav sarežģīta lieta. Jums būs nepieciešams zināms maz atjautība formulēšanā modeli.

Lūk, piemērs:

 



 <? Php







 if (preg_match ("/ mrwebmaster / i", "Lai dzīvo MrWebmaster! ')) {



  



 echo "Found";







 Else {}



  



 echo "nav atrasts";







 }







 ?>

 
Tas ir tas pats:
 



 <? Php







 if (eregi ("mrwebmaster ',' Lai dzīvo MrWebmaster! ')) {



  



 echo "Found";







 Else {}



  



 echo "nav atrasts";







 }







 ?>

 

Mūsu vienkāršs piemērs, izmantojot preg_match (), mēs izmantojām virkni kā paraugu

 



 / Mrwebmaster / s

 
Paskatīsimies sintaksi:
  • / ... / - Norobežot sākumā un vārda beigās;
  • mrwebmaster - ir vienkāršs string, kurā vēlaties pārbaudīt tekstu pieņēma, kā otro argumentu;
  • i - "i" pēc beigu norobežotājs norāda, ka meklēšanu ieteicams nav reģistrjutīga (tāpat kā tas tika darīts, izmantojot funkciju eregi ()). Tehniski tas "i" ir modifikators, kas šajā lapā pilnu sarakstu modifikatorus atļauts sintaksi PCRE.

Starpība ar ereg ()

Kā jūs varat redzēt atšķirību ar ereg () nav daudz, pieņemsim apkopot tos īsumā:

  • izmantot atdalītājus / ... / (faktiski jūs varat izmantot citas rakstzīmes, kā atdalītāju, bet slīpsvītra ir parastā izvēles);
  • lietas nejūtīga versija (eregi ()) aizstāj ar izmantojot "i" pēc beigu norobežotājs;
  • rakstura / modelī klātbūtne būs nepieciešama (ja tiek izmantoti, lai slīpsvītra kā norobežotājs) evakuācijas (\ /), lai nebūtu iespējams sajaukt ar atdalītājus;
  • Ir dažas nelielas atšķirības pārvaldībā ASCII rakstzīmes (POSIX funkcijas, atšķirībā PCRE pieņemt ciparu ASCII rakstzīmes:. Piem. atbilst skaitlim 10 un 13 jaunu rindu rakstatgriezes; otrādi ar PCRE funkcijām 10 ir tikai desmito).
  • funkcija ereg () pieņem tikai trīs parametri (modelis, tekstu, kas jāpārbauda, ​​un, pēc izvēles, masīvs turēt rezultātiem), un preg_match () atzīst, piecas (pirmajiem diviem, mēs esam jau redzējuši, ir nepieciešamas, pārējās trīs ir obligāti );

Pamatojoties uz iepriekš teikto (un atšķirības, kas ir minēti), mēs varam izskatīt vēlreiz (daļēji) ir derīgas teorētiskās paskaidrojumi par sintaksi regulāras izteiksmes var atrast šajā lapā raksta "regulāras izteiksmes PHP", kas veltīta veco POSIX funkcijas .

Šajā pašā kategorijā ...
E-Learning
Linux (Kurss) Linux (Kurss)
Pilnīga rokasgrāmata, lai atvērtā koda sistēmas. Sākot no 49 €.
MySQL (Kurss) MySQL (Kurss)
Vadība ir atvērtā koda datu bāzi. Sākot no € 39.
PHP (Kurss) PHP (Kurss)
Pilns kurss, lai radītu dinamisku tīmekļa vietnes. Sākot no 49 €.
Sponsorētās saites