Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
raf_gc
Powidzmy, że mam w szblonie strony pewne zmienne które bede zastępował póżniej odpowiednimi kodem HTML. Jak na razie mam dwie zmienne:

%field:menu% oraz %output%

Jak to zrobić, a by stworzyć tablicę zawierającą wszystkie ciągi %field:.*%?

Szablon całkowicie znajduje się w zmiennej $template i gdy wykonuję:

  1. <?php
  2. eregi("%field:.*%", $template, $result);
  3. echo $result[0];
  4. ?>


To wyświetla mi się %field:menu%<html..........>%output%, a ja chcę aby wyświetliło mi się tylko %field:menu%.
mariuszn3
Sama '*' będzie brała wszystko jak leci chciwie (greedy).. musisz narzucić tak zwany leniwy (lazy) tryb czyli dodać '?' tak by się zatrzymała jesli dalsza częsć wyrażenia, będzie się zgadzać. Ostatecznie:
Kod
%field:.*?%
raf_gc
Niestety po użyciu %field:.*?% ukazuje się błąd:

php Warning: eregi() [function.eregi]: REG_BADRPT in G:\wwwroot\raf\index.php on line 23

a przy użyciu %field:.?% otrzymuję pustą tablicę.
mariuszn3
Cytat(raf_gc @ 2006-05-20 13:39:09)
Niestety po użyciu %field:.*?% ukazuje się błąd:

php Warning: eregi() [function.eregi]: REG_BADRPT in G:\wwwroot\raf\index.php on line 23

a przy użyciu %field:.?% otrzymuję pustą tablicę.

no tak.. wyrażenia regularne oparte na POSIX'ie mają dużo ograniczeń. Skorzystaj z alternatywnego zbioru funkcji (PCRE). Tam odpowiednikiem będzie preg_match():
  1. <?php
  2.  
  3. preg_match('/%field:.*?%/i', $template, $result)
  4.  
  5. ?>
raf_gc
Dzięki, jeden krok do przodu, ale jeśli umieszczę w szablonie strony następną zmienną %field:data% to po wykonaniu var_dump($result) otrzymuję tylko
array(1) { [0]=> string(12) "%field:menu%" }
a powinny być dwa dopasowania, chyba, że jestem w błędzie.

P.s Czy znacie jakiś dobry kurs wyrażeń regularnych PCRE?
matrach
Cytat(raf_gc @ 2006-05-21 12:20:49)
jeśli umieszczę w szablonie strony następną zmienną %field:data%  to po wykonaniu var_dump($result) otrzymuję tylko
array(1) { [0]=> string(12) "%field:menu%" }
a powinny być dwa dopasowania, chyba, że jestem w błędzie.

o_s%C4%85_wyra%C5%BCenia_regularne_i_do_czego_s%C5%82u%C5%BC%C4%85%3F' target='_blank
raf_gc
Dziękuję serdecznie! Dokładnie o to mi chodziło!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.