Wprowadzenie do wyrażeń regularnych w PHP
Wyrażenia regularne to takie polecenia do skomplikowanego wyszukiwania i zamiany. Pozwalają one robić bardzo ciekawe rzeczy, ale niestety, są dość trudne do opanowania.
Istnieje kilka funkcji PHP do pracy
z wyrażeniami regularnymi. Zaczniemy się z nimi zapoznawać
na przykładzie preg_replace. Ta
funkcja przyjmuje jako pierwszy parametr co zamienić,
a jako drugi - na co zamienić, a jako trzeci parametr
- ciąg znaków, w którym należy dokonać zamiany:
<?php
preg_replace(co zamienić, na co, ciąg);
?>
Przy czym pierwszym parametrem nasza funkcja przyjmuje
nie zwykły ciąg znaków, a wyrażenie regularne,
przedstawiające sobą ciąg znaków z zestawem poleceń,
umieszczonych wewnątrz znaków kratki #.
Te kratki nazywane są ogranicznikami
wyrażeń regularnych.
Po ogranicznikach można pisać modyfikatory - polecenia, które zmieniają ogólne właściwości wyrażenia regularnego.
Same wyrażenia regularne składają się z dwóch rodzajów znaków: z tych, które oznaczają same siebie oraz ze znaków-poleceń, które nazywane są znakami specjalnymi.
Litery i cyfry oznaczają same siebie. W następnym
przykładzie za pomocą wyrażenia regularnego
zamienimy literę 'a' na '!':
<?php
preg_replace('#a#', '!', 'bab'); // zwróci 'b!b'
?>
A oto kropka jest znakiem specjalnym
i oznacza dowolny znak. W następnym
przykładzie znajdziemy ciąg znaków według takiego wzorca:
litera 'x', następnie dowolny znak, następnie
znowu litera 'x':
<?php
preg_replace('#x.x#', '!', 'xax eee'); // zwróci '! eee'
?>
Dany jest ciąg znaków:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Napisz wyrażenie regularne, które znajdzie ciągi znaków
'ahb', 'acb', 'aeb'
według wzorca: litera 'a', dowolny znak,
litera 'b'.
Dany jest ciąg znaków:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Napisz wyrażenie regularne, które znajdzie ciągi znaków
'aeeb', 'adcb', 'axeb'
według wzorca: litera 'a', dwa dowolne
znaki, litera 'b'.