GAJDAW


PROGRAMY


Wyrażenia regularne PCRE w PHP
Tutorial

Włodzimierz Gajda





1. Testowanie wyrażeń regularnych

Wyrażenia regularne będę testował wykorzystując funkcję preg_match():

...brak dostępu...

Funkcja ta posiada dwa obowiązkowe parametry: wyrazenie_regularne oraz badany_napis. Odpowiada ona na pytanie: czy podane wyrażenie występuje w napisie. Jeśli wywołasz funkcję preg_match() z parametrami:

...brak dostępu...

wówczas funkcja ta sprawdzi, czy w napisie abecadło występuje wyrażenie regularne abc.

Wyrażenie regularne przekazywane do funkcji preg_match() jest ujęte w ograniczniki. Rolę ograniczników może spełniać znak nie będący literą ani cyfrą. Zazwyczaj stosowane są ukośniki /, ale może to także być m.in. |, *, # czy nawiasy ( ), [ ] oraz { }.

Jeśli chcesz szukać napisu rudy 102, to wyrażenie przekazywane do funkcji preg_match() przyjmie postać /rudy 102/. Gdy jako ograniczniki zastosujesz znaki |, wówczas wyrażenie regularne będzie wyglądało: |rudy 102|. Oto kilka różnych ograniczników:

...brak dostępu...

Wynikiem funkcji jest zawsze liczba 0 lub 1, która informuje o tym, czy podane wyrażenie zostało odnalezione.

Czyli po wywołaniu:

...brak dostępu...

zmienna $wyn przyjmie wartość 0 (napis abc nie występuje w napisie abecadło). Natomiast po wywołaniu:

...brak dostępu...

w zmiennej $wyn znajdzie się liczba 1, która oznacza, że wyrażenie regularne a występuje w napisie ala ma kota. Zwróć uwagę, że litera a występuje w napisie ala ma kota cztery razy, zaś funkcja preg_match() zwraca wynik równy 1. Dzieje się tak dlatego, że funkcja ta kończy działanie po odnalezieniu pierwszego wystąpienia.

Nie ma również znaczenia miejsce dopasowania wyrażenia. Wyszukiwane wyrażenie może wystąpić na początku (tak jak w przykładzie z napisem ala ma kota) lub na końcu. Wywołanie:

...brak dostępu...

zwróci wartość 1. Oznacza to, że wyrażenie regularne s zostało odnalezione w napisie adres.

Innymi słowy funkcja preg_match() przeprowadza test: czy dane wyrażenie występuje co najmniej jeden raz w podanym napisie? Odpowiedzią na to pytanie jest zawsze liczba 0 (wyrażenie nie wystąpiło) lub 1 (wyrażenie wystąpiło co najmniej jeden raz na dowolnej pozycji).