Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /PHP/
- Na powyższym przykładzie widzimy wyszukiwany tekst (PHP), otoczony identycznymi znakami ograniczającymi (są to //). Są one najczęściej używane do spełniania tej roli. Na drugim miejscu znajdują się # (hash).
- ----------------------------------------------------------------------------------------------------------
- UWAGA!
- Znaki unikowe. Aby zapisać w wyrażeniu regularnym znak ukośnika, gdy jest on zarazem stosowany jako znak ograniczający, poprzedzamy go ukośnikiem odwróconym. W efekcie ukośnik reprezentuje ciąg dwóch znaków: \/.
- Tak samo radzimy sobie w sytuacji, gdy stosowane są inne znaki ograniczające. Gdy są nimi znaki #, to wewnątrz wyrażenia regularnego reprezentuje je ciąg \#.
- ----------------------------------------------------------------------------------------------------------
- Aby używać wyrażeń regularnych, musimy poznać odpowiednie funkcje PHP. podstawowa to preg_match(). Pozwala ona sprawdzić, czy wyrażenie może zostać DOPASOWANE do określonego ciągu znaków.
- <?php
- $text = 'PHP jest super!';
- if(preg_match('/PHP/', $text)){
- $output = '$text zawiera ciąg “PHP”.';
- } else {
- $output = '$text nie zawiera ciągu “PHP”.';
- }
- echo $output;
- ?>
- Modyfikatory wzorca
- ----------------------
- (ang. pattern modifiers) to jednoznakowe kody umieszczone BEZPOŚREDNIO po znaku kończącym wyrażenie regularne, np:
- i - modyfikator wyłączający rozróżnianie wielkich liter
- s - modyfikator zmienia działanie kropki tak, by uwzględniał również znak nowego wiersza (domyślnie nie uwzględnia znaku nowego wiersza - \n)
- O ile zatem /PHP/ zostanie dopasowane wyłącznie do ciągu "PHP",
- to /PHP/i zostanie dopasowane do "PHP", "php", i "pHp".
- oto przykład:
- <?php
- $text = 'Co to takiego Php?';
- if(preg_match('/PHP/i', $text)){
- $output = '$text zawiera ciąg “PHP”.';
- } else {
- $output = '$text nie zawiera ciągu “PHP”.';
- }
- echo $output;
- ?>
- Inny, bardziej rozbudowany przykład:
- wzorzec: /^PH.*/
- ^(daszek) - znacza początek poszukiwanego ciągu.
- .(kropka) - oznacza dowolny znak
- *(gwiazdka) - oznacza zero lub więcej wystąpień poprzedniego znaku
- Podany wzorzec wyszukuje zatem sekwencję "PH" występującą na początku ciągu znaku oraz wszystkie znaki następujące po niej. Oznacza to, że dopasowanie zostanie znalezione zawsze, o ile tylko pierwszymi dwoma znakami poszukiwanego ciągu będą "PH". Dopasowaniem będzie cały ciąg, np: "PHP - preprocesor hipertekstu", a nie tylko dwa znaki.
- ^(daszek) - znacza początek poszukiwanego ciągu. Nie reprezentuje żadnych znaków, wyłącznie pozycję w ciągu.
- $(dolar) - koniec ciągu znakowego. Nie reprezentuje żadnych znaków, wyłącznie pozycję w ciągu.
- /PHP/ - pasuje do "PHP jest super!" i "Co to takiego PHP?".
- /^PHP/ - pasuje do "PHP jest super", ale nie "Co to takiego PHP?".
- /PHP$/ - pasuje do "Uwielbiam PHP", ale nie "Co to takiego PHP?".
- /^PHP$/ - pasuje tylko do PHP
- .(kropka) - symbol wieloznaczny reprezentujący dowolny znak na wyjątkiem nowego wiersza (\n)
- /^...$/ - pasuje do dowolnego ciągu trzech znaków. (bez znaków nowego wiersza \n).
- *(gwiazdka) - gwiazdka wymaga, aby poprzedzający ją znak wystąpił zero, lub wiele razy. Znak gwiazdki jest "chciwy" i dąży do objęcia dopasowaniem jak największej liczby znaków. w przypadku ciągu 'i tu, i tam' wzorzec /i.*t/ zostanie dopasowany do 'i tu, i t'. Aby uzyskać jak najmniejszą liczbę znaków, należy użyć znaku zapytania.
- +(plus) - znak plusa wymaga, aby poprzedzający go znak wystąpił jeden lub więcej razy. Jest "chciwy", podobnie jak gwiazdka, i podobnie jak ona może być osłabiony użyciem znaku zapytania.
- ?(znak zapytania) - określa poprzedni znak jako opcjonalny. Jeżeli jest po gwiazdce lub plusie, nakazuje minimalne ("leniwe") dopasowanie - obejmujące jak najmniejszą liczbę znaków.
- /bana?n/ Pasuje do "banan" i "bann", ale nie do "banaan".
- /bana+n/ Pasuje do "banan" i "bananan", ale nie do "ban" czy "banaan".
- /bana*n/ Pasuje do "banan", "bann" i "banaaan", ale nie do "bnan".
- /^[a-zA-Z]+$/ Pasuje do dowolnego znaku zawierającego jedną lub więcej liter (i żadnych innych znaków).
- |(znak potoku) - Znak nakazujący dopasować wzorzec na lewo od niego lub na prawo od niego.
- ()(nawiasy okrągłę) - Nawiasy definiują grupę następujących jeden po drugim znaków do której można następnie zastosować modyfikator taki jak *,+ czy ?.
- /^(tak|nie)$/ Pasuje wyłącznie "tak" i "nie"
- /ba(na)+n/ Pasuje do "banan" i "bananan", ale nie do "ban", czy "banaan".
- /ba(na|ni)+/ Pasuje do "bana" i "banina", ale nie do "naniba".
- [](nawiasy kwadratowe) - nawiasy kwadratowe definiują KLASĘ ZNAKÓW.
- źródło: http://php.net/manual/pl/reference.pcre.pattern.syntax.php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement