Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> preg_match - szukanie ostatniego wyrazu w ciągu znaków
HuzarO
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 13.04.2012

Ostrzeżenie: (0%)
-----


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.

Ten post edytował HuzarO 27.04.2012, 21:24:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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

dostosuj pod swoje ify.
Go to the top of the page
+Quote Post
HuzarO
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 2
Dołączył: 13.04.2012

Ostrzeżenie: (0%)
-----


Dziękuję bardzo, co ja bym zrobił bez Was smile.gif

Ten post edytował HuzarO 28.04.2012, 12:14:53
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:49