Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenia regularne
Forum PHP.pl > Forum > Przedszkole
Gość_Adam
Witam, mam problem z wyrażeniami regularnymi PCRE a dokładnie to nie potrafie ułożyć wzoru dla mojego parsera systemu szablonów. Próbowałem np. tak:
  1. <?php
  2.  
  3. preg_match_all('/{(+)}/e', $this->template_file, $compiled);
  4. ?>
ale nie działa ;/

Co chce osiągnać to chyba oczywiste, powyższa funkcja ma mi poszukać ciągu znaków zaczynającego się od { a kończącego na }.

Dzięki wielkie.
Dex1987
ja mam tak

Cytat
/\{\$([a-zA-Z0-9_]+)\}/


i to dziala dla {$nazwa}.
mariuszn3
Cytat(Gość_Adam @ 2006-05-02 10:29:53)
Witam, mam problem z wyrażeniami regularnymi PCRE a dokładnie to nie potrafie ułożyć wzoru dla mojego parsera systemu szablonów. Próbowałem np. tak:
  1. <?php
  2.  
  3. preg_match_all('/{(+)}/e', $this->template_file, $compiled);
  4. ?>
ale nie działa ;/

Co chce osiągnać to chyba oczywiste, powyższa funkcja ma mi poszukać ciągu znaków zaczynającego się od { a kończącego na }.

Dzięki wielkie.

To wyrażenie chyba w ogóle nie ma prawa działać.
Pokolei:
Kod
{

Znajdź znak {
Kod
(

Otwórz grupę
Kod
+

Znak '+' oznacza znajdź poprzedni element raz lub więcej razy (czego u Ciebie ma szukać - nawiasu? - nie poprzedziłes plusa żadnym elementem)
To wywala błąd
Powinienes mieć
Kod
.+?

Kropka - dowolny znak,
+ znajdź poprzedni znak raz lub więcej razy
? - nie chciwie.. to znaczy jesli następujące potem wyrażenie jest odnalezione, przerwij
Bez ? by się nie zatrzymało i objęło by koncowe '}'
i tyle czyli całosc:
Kod
{(.+?)}
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.