Advertisement
molik

PHP | Wyrażenia regularne

Nov 29th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.81 KB | None | 0 0
  1. /PHP/
  2. 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).
  3.  
  4.  
  5. ----------------------------------------------------------------------------------------------------------
  6.     UWAGA!
  7. 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: \/.
  8. 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 \#.
  9. ----------------------------------------------------------------------------------------------------------
  10.  
  11.  
  12. 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.
  13.  
  14. <?php
  15. $text = 'PHP jest super!';
  16.  
  17. if(preg_match('/PHP/', $text)){
  18.     $output = '$text zawiera ciąg &ldquo;PHP&rdquo;.';
  19. } else {
  20.     $output = '$text nie zawiera ciągu &ldquo;PHP&rdquo;.';
  21. }
  22.  
  23. echo $output;
  24.  
  25. ?>
  26.  
  27.  
  28. Modyfikatory wzorca
  29. ----------------------
  30. (ang. pattern modifiers) to jednoznakowe kody umieszczone BEZPOŚREDNIO po znaku kończącym wyrażenie regularne, np:
  31. i - modyfikator wyłączający rozróżnianie wielkich liter
  32. s - modyfikator zmienia działanie kropki tak, by uwzględniał również znak nowego wiersza (domyślnie nie uwzględnia znaku nowego wiersza - \n)
  33.  
  34. O ile zatem /PHP/ zostanie dopasowane wyłącznie do ciągu "PHP",
  35. to /PHP/i zostanie dopasowane do "PHP", "php", i "pHp".
  36.  
  37. oto przykład:
  38.  
  39. <?php
  40. $text = 'Co to takiego Php?';
  41.  
  42. if(preg_match('/PHP/i', $text)){
  43.     $output = '$text zawiera ciąg &ldquo;PHP&rdquo;.';
  44. } else {
  45.     $output = '$text nie zawiera ciągu &ldquo;PHP&rdquo;.';
  46. }
  47.  
  48. echo $output;
  49.  
  50. ?>
  51.  
  52. Inny, bardziej rozbudowany przykład:
  53.  
  54. wzorzec: /^PH.*/
  55. ^(daszek) - znacza początek poszukiwanego ciągu.
  56. .(kropka) - oznacza dowolny znak
  57. *(gwiazdka) - oznacza zero lub więcej wystąpień poprzedniego znaku
  58.  
  59. 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.
  60.  
  61.  
  62. ^(daszek) - znacza początek poszukiwanego ciągu. Nie reprezentuje żadnych znaków, wyłącznie pozycję w ciągu.
  63. $(dolar) - koniec ciągu znakowego. Nie reprezentuje żadnych znaków, wyłącznie pozycję w ciągu.
  64.  
  65. /PHP/       - pasuje do "PHP jest super!" i "Co to takiego PHP?".
  66. /^PHP/      - pasuje do "PHP jest super", ale nie "Co to takiego PHP?".
  67. /PHP$/      - pasuje do "Uwielbiam PHP", ale nie "Co to takiego PHP?".
  68. /^PHP$/     - pasuje tylko do PHP
  69.  
  70.  
  71. .(kropka)           - symbol wieloznaczny reprezentujący dowolny znak na wyjątkiem nowego wiersza (\n)
  72. /^...$/             - pasuje do dowolnego ciągu trzech znaków. (bez znaków nowego wiersza \n).
  73.  
  74. *(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.
  75.  
  76. +(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.
  77.  
  78. ?(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.
  79. /bana?n/        Pasuje do "banan" i "bann", ale nie do "banaan".
  80. /bana+n/        Pasuje do "banan" i "bananan", ale nie do "ban" czy "banaan".
  81. /bana*n/        Pasuje do "banan", "bann" i "banaaan", ale nie do "bnan".
  82. /^[a-zA-Z]+$/   Pasuje do dowolnego znaku zawierającego jedną lub więcej liter (i żadnych innych znaków).
  83.  
  84. |(znak potoku)      - Znak nakazujący dopasować wzorzec na lewo od niego lub na prawo od niego.
  85.  
  86. ()(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 ?.
  87. /^(tak|nie)$/   Pasuje wyłącznie "tak" i "nie"
  88. /ba(na)+n/      Pasuje do "banan" i "bananan", ale nie do "ban", czy "banaan".
  89. /ba(na|ni)+/    Pasuje do "bana" i "banina", ale nie do "naniba".
  90.  
  91. [](nawiasy kwadratowe)  -   nawiasy kwadratowe definiują KLASĘ ZNAKÓW.
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. źródło: http://php.net/manual/pl/reference.pcre.pattern.syntax.php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement