Kod
$string = '
cos
{if $i == "5"}
zawartosc 1a
        {if}
                zawartosc 2
        {/if}

zawartosc 1b

{/if}

cos2...
{if 3}
aerg
{/if}
';

Mam podany ciag znakow. Chcialbym dobrac sie do kazdego ze znacznikow od srodka. czyli wpierw
Kod
        {if}
                zawartosc 2
        {/if}

pozniej
Kod
{if $i == "5"}
zawartosc 1a
        {if}
                zawartosc 2
        {/if}

zawartosc 1b

{/if}

a nastepnie
Kod
{if 3}
aerg
{/if}


Problem dla mnie nie jest latwy, nie jestem najlepszy z wyrazen.

Mój pattern:
Kod
/\{([a-z]{1,})( (.*?))?\}([^\{].+?)\{\/\\1\}/is

O co chodzi... Wykombinowalem ze wyrazenie ma znalezc {...}{/...} w ktorym moga wystepowac parametry i wartosci czyli np {... id="4"} jakis text {/...} lecz najpierw chce sie dobrac od srodka blokow - nie pytajcie sie czemu. Wiec napisalem wyrazenie ktore pasuje do {...}{/...} oraz moga wystepowac parametry i wartosci i jest super, lecz w wartosciach chce zablokowac wystapienie "{" ... probowalem wyelminowac caly blok {...}...{/...} ale nie udalo mi sie napisac wyrazenia.

Nie wiem czy dobrze wytlumaczylem sytuacje, mysle ze tak. W razie watpliwosci prosze pytac - problem jest dosc trudny jak dla mnie.