Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match - szukanie ostatniego wyrazu w ciągu znaków
Forum PHP.pl > Forum > PHP
HuzarO
Witam, otóż mój problem polega na tym że potrzebuje znaleść ostatni wyraz w ciągu, ale nie na końcu ciągu znaków tylko w środku stringu. Może podam przykład aby to lepiej wyjaśnić:
  1. $string = "
  2. ...
  3. [ IF(...) ]
  4. ...
  5. [ IF(...) ]
  6. ...
  7. [ END_IF]
  8. ...
  9. [ END_IF ]
  10. ...
  11. ";

jak widzimy w przykładzie jest sobie string który ma instrukcje warunkową, lecz funkcja preg_match_all() wyciąga dobrze ten string lecz problem tkwi w tym że bieże ona pierwszego IF'a i tego pierwszego [ END_IF ] zamiast ostatniego, tak jak powinna go wyciągać, i przez to psuje mi się cała instrukcja warunkowa. Moje pytanie brzmi jak wyciągnąć 1 IF'a i pasującego do niego ostatniego END_IF'a aby ten if w środku i end_if w środku nie był tknięty. Kropeczki oczywiście oznaczają nieokreśloną ilość innych znaków i wyrazów. Myślę że dobrze zobrazowałem swój problem.
Załącze jeszcze swój wzorzec z funkcji preg_match_all():
  1. '/([\t]*?)\[ IF\(([a-zA-Z0-9\_\-\+\*\\\=\!\"\'\(\)\/\ \{\}\:\&\|\>\<\]\[]*?)\)\ ]([0-9\D\"\'\n]*?)\[END_IF]/'

Pozdrawiam.
Spawnm
Coś podobnego kiedyś robiłem do bbcode:
  1. return preg_replace_callback( '#\[lol]((?:[^[]|\[(?!/?lol])|(?R))+)\[/lol]#'...

dostosuj pod swoje ify.
HuzarO
Dziękuję bardzo, co ja bym zrobił bez Was smile.gif
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.