gudn tach!
preg_match_all ("/(?!.*{START (.+)}.*){(?!START |END )(.+)}(?!.*{END \1}.*)/Us", $template, $vars);
allein der anfang, also /(?!.*{START (.+)}.*)/ sieht nach unsinn aus.
negative look-aheads am _anfang_? willst du das wirklich?
So in etwa das Template:
<body>
{varibale0}
{START bereich1}
{varibale1}
<b>{varibale2}</b>
{START bereich2}
{varibale3}
{END bereich2}
{START bereich3}
{varibale4}
{END bereich3}
{END bereich1}
</body>
sobald es um verschachtelte "dinger" geht, bist du mit regexp i.a.r. regel aufgeschmissen, es sei denn du kennst apriori den maximalen verschachtelungsgrad. kennst du ihn?
ich empfehle dir, nicht zu versuchen, das mit genau regexp erledigen zu wollen. in php gibt's bestimmt auch tolle "parser"-module. ansonsten sollte es auch mit gewoehnlichen string-funktionen gehen unter zuhilfenahme einiger preg_dinger.
prost
seth