Johdatus säännöllisiin lausekkeisiin PHP:ssä
Säännölliset lausekkeet ovat komentoja monimutkaista etsimistä ja korvaamista varten. Ne antavat mahdollisuuden tehdä erittäin mielenkiintoisia asioita, mutta valitettavasti ne ovat melko vaikeita hallita.
On olemassa useita PHP-funktioita säännöllisten lausekkeiden
käsittelyyn. Tutustumme niihin esimerkin avulla
funktiosta preg_replace. Tämä
funktio ottaa ensimmäisenä parametrina mitä korvata,
toisena - millä korvata, ja kolmantena parametrina
- merkkijonon, josta korvaus tehdään:
<?php
preg_replace(mitä korvata, millä, merkkijono);
?>
Tässä tapauksessa funktiomme ei ota ensimmäisenä parametrina
pelkkää merkkijonoa, vaan säännöllisen lausekkeen,
joka edustaa komentojoukkoa sisältävää merkkijonoa,
sijoitettuna risuaitamerkkien # sisälle.
Näitä risuaitoja kutsutaan säännöllisten lausekkeiden erottimiksi.
Erottimien jälkeen voidaan kirjoittaa modifikaattoreita - komentoja, jotka muuttavat säännöllisen lausekkeen yleisiä ominaisuuksia.
Itse säännölliset lausekkeet koostuvat kahdesta merkkityypistä: merkeistä, jotka edustavat itseään ja komennusmerkeistä, joita kutsutaan erikoismerkeiksi.
Kirjaimet ja numerot edustavat itseään. Seuraavassa
esimerkissä korvaamme säännöllisen lausekkeen avulla
kirjaimen 'a' kirjaimeksi '!':
<?php
preg_replace('#a#', '!', 'bab'); // palauttaa 'b!b'
?>
Piste puolestaan on erikoismerkki
joka edustaa mitä tahansa merkkiä. Seuraavassa
esimerkissä löydämme merkkijonon seuraavan mallin mukaisesti:
kirjain 'x', sitten mikä tahansa merkki, sitten
taas kirjain 'x':
<?php
preg_replace('#x.x#', '!', 'xax eee'); // palauttaa '! eee'
?>
Annettu merkkijono:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'ahb', 'acb', 'aeb'
mallin mukaisesti: kirjain 'a', mikä tahansa merkki,
kirjain 'b'.
Annettu merkkijono:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Kirjoita säännöllinen lauseke, joka löytää merkkijonot
'aeeb', 'adcb', 'axeb'
mallin mukaisesti: kirjain 'a', kaksi mitä tahansa
merkkiä, kirjain 'b'.