Andü: Negierter Sring in Regulärem Ausdruck

Beitrag lesen

Jippie, ich hab das Problem selbst gelöst. Aber ein kleines Problem bleibt noch. Ich mach es jetzt so:

preg_match_all ("/(?!.*{START (.+)}.*){(?!START |END )(.+)}(?!.*{END \1}.*)/Us", $template, $vars);

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>

Jetzt kommt in etwa das raus:

Array
(
  [bereich1] => Array
  (
    [bereich2] => Array
    (
      [0] => variable3
    )
    [bereich3] => Array
    (
      [0] => variable4
    )
    [0] => variable1
    [1] => variable2
    [2] => variable4
  )
)

Sprich, den ersten "Unterbereich" macht er richtig, aber bei den folgenden werden die variablen wieder durchgeschleift. Außerdem werden die Variablen, welche sich in keinem Bereich befinden auch nicht eingelesen!