Ich reduziere mal den code auf das eigentliche Problem:
{{{{{}}}}}
Wie schaffe ich, dass er nicht bereits nach dem ersten } abbricht?
{{{}}} {{{}}}
Wie schaffe ich es darüberhinaus, dass er nicht beide tags als einen erkennt?
Und das geht auch noch:
{{a}{b}}
Weil zwischen den syntax immanenten symbolen { und } auch noch eine beliebige Zeichenkette stehen kann, wird es umso schwieriger:
anfangstext{a{b{ccc}d}e}mitteltext{{y{xxx1}{xxx2}}z}endtext
Das sollte hierbei das Ergebnis sein, wenn ich den template-string mit preg_split auslese:
0 => 'anfangstext'
1 => '{a{b{ccc}d}e}'
2 => 'mitteltext'
3 => '{{y{xxx1}{xxx2}}z}'
4 => 'endtext'