..


Sponsoroidut linkit

PCRE säännöllinen lauseke toiminnot (ja erot POSIX toiminnot)

Artikkelin kirjoittanut Max Bossi
Sivu 1 4

Meillä oli jo vihjaillut viime päivinä sivujen läpi blogistamme, mutta tänään haluan tutkia aihetta, joka uskoakseni kiinnostaa tuhansia kehittäjiä - kuten minä - joka päivä käyttää PHP kehittää web-sovelluksia.

Alkaen versio 5.3 PHP, itse asiassa, kehittäjille, jotka haluavat hyödyntää Säännöllisiä lausekkeita voi enää käyttää POSIX toiminnot (niin sanotusti ereg () ja perhe), mutta on välttämättä, käytä toiminnot PCRE (Perl Compatible Regular Expressions), esimerkiksi preg_match () .

PCRE toiminnot rakennettu PHP voit käyttää tyypillistä säännöllinen lauseke syntaksista Perl (tarkemmin, nykyinen toteutus tukee syntaksi Perl 5,005), mikä on hieman erilainen kuin POSIX toimintoja. Lisätietoja syntaksi PCRE on mahdollista kuulla manuaalinen saatavilla virallisilla verkkosivuilla PCRE.org.

Vertailu: preg_match ()

Jos haluat tehdä vertailua merkkijono ja malli (malli kirjoittaa muotoon säännöllisten lausekkeiden) täytyy käyttää preg_match (), että itse asiassa korvata ereg () ja eregi ().

Käyttämällä preg_match () on yleisessä käytössä, melko yksinkertainen: ohitat toiminnon malli ja merkkijono tarkistaa. Jos kuvio on tyytyväinen, funktio palauttaa 1 jos 0 (tai epätosi, jos virhe).

Itse siirtyä ereg () ei ole monimutkainen asia. Tarvitset vain vähän kekseliäisyyttä muotoiluun mallia.

Tässä esimerkki:

 



 <? Php







 if (preg_match ('/ mrwebmaster / i', 'Eläköön MrWebmaster! ")) {



  



 echo "löydy";







 Else {}



  



 echo "Ei löydy";







 }







 ?>

 
Tämä on sama:
 



 <? Php







 if (eregi ('mrwebmaster', 'Eläköön MrWebmaster! ")) {



  



 echo "löydy";







 Else {}



  



 echo "Ei löydy";







 }







 ?>

 

Meidän yksinkertainen esimerkki käyttää preg_match () käytimme merkkijonon kuvio

 



 / Mrwebmaster / s

 
Katsotaanpa syntaksia:
  • / ... / - Rajata alussa ja lopussa sananvapauteen;
  • mrwebmaster - on yksinkertainen merkkijono, jonka haluat tarkistaa tekstin välitetään toinen perustelu;
  • I - "i" päättymisen jälkeen erotin osoittaa, että haku on ei ole merkitystä (kuten tehtiin käyttämällä toimintoa eregi ()). Teknisesti tämä "minä" on määrite, ja tämä sivu täydellisen listan määritteet sallittu syntaksia PCRE.

Ero ereg ()

Kuten huomaat eron ereg () ei ole paljon, nyt niistä yhteenvedon lyhyesti:

  • käyttää erottimia / ... / (oikeastaan ​​voit käyttää muita merkkejä kuin erottimena, mutta slash on tavallista valinta);
  • Kirjainkoolla versio (eregi ()) korvataan käytöstä "I" jälkeen sulkeminen erotin;
  • läsnäolo merkki / rakenteessa edellyttävät (jos olet tottunut kauttaviivaa Delimiter) paeta (\ /), jotta ei tule sekoittaa erottimia;
  • On olemassa joitakin eroja hallinta ASCII-merkkien (POSIX toiminnot, toisin PCRE hyväksyä numeerinen ASCII: esim.. Vastaa numero 10 ja 13 uutta linja rivinvaihto; päinvastoin kanssa PCRE toiminnot 10 edustaa vain numero kymmenen).
  • toiminto ereg () hyväksyy vain kolme parametria (kuvio, teksti on tarkistettava ja mahdollisesti array pitää tuloksia) ja preg_match () myöntää viisi (kaksi ensimmäistä, olemme jo nähneet, vaaditaan, muut kolme ovat valinnaisia );

Perusteella edellä (ja erot, jotka on mainittu) voimme harkita uudelleen (osittain) voimassa teoreettisia selityksiä syntaksi säännöllisten lausekkeiden löytyvät tällä sivulla on artikkeli "vakiolausekkeita PHP" omistettu vanha POSIX toiminnot .

Samassa luokassa ...
E-Learning
Linux (kurssi) Linux (kurssi)
Täydellinen opas avoimen lähdekoodin järjestelmä. Alkaen 49 €.
MySQL (kurssi) MySQL (kurssi)
Hallinta avoimen lähdekoodin tietokanta. Alkaen 39 €.
PHP (kurssi) PHP (kurssi)
Täysi tietenkin luoda dynaamisia Web-sivustoja. Alkaen 49 €.
Sponsoroidut linkit