$string = " ... [ IF(...) ] ... [ IF(...) ] ... [ END_IF] ... [ END_IF ] ... ";
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():
'/([\t]*?)\[ IF\(([a-zA-Z0-9\_\-\+\*\\\=\!\"\'\(\)\/\ \{\}\:\&\|\>\<\]\[]*?)\)\ ]([0-9\D\"\'\n]*?)\[END_IF]/'
Pozdrawiam.