Nabend,
bin sicher nich der erste, der das Problem hat, aber ich brauch mal ein paar Gedanken. Die Suche im Forum rief mir wieder UNGREEDY-Modifkatoren und Recursive Patterns ins Gedächtnis, aber es bleiben immer noch Probleme.
Passt auf, folgendes Konstrukt:
Man sieht schon, das ganze hat wieder was mit dem leidigen Template-Thema zu tun. Dieses Skript erfasst den zweiten repeat-Block mit dem Namen "chapter" korrekt, jedoch den ersten (verschachtelten) nur teilweise. Er nimmt wieder mal den Inneren, statt den Äußeren und schneidet so:
natürlich ab. Ich brauche einen Ausdruck der sich sowohl nach /U richtet, aber trotzdem die Rekursion erkennt.
"Geht nicht" gibts nicht, die Nasen von der Smarty-Template-Engine ham das auch hinbekommen und irgendwie parst der PHP-Interpreter ja auch bis ins Unendliche verschachtelte Konstrukte.
bin sicher nich der erste, der das Problem hat, aber ich brauch mal ein paar Gedanken. Die Suche im Forum rief mir wieder UNGREEDY-Modifkatoren und Recursive Patterns ins Gedächtnis, aber es bleiben immer noch Probleme.
Passt auf, folgendes Konstrukt:
PHP-Code:
<?php
$string1 = <<<END
<tpl:repeat name="gtp_tree">
jkljk
<tpl:repeat name="chapter_tree">
<li>Seite <tpl:var name="page_nr" type="script" /></li>
</tpl:repeat>
lkjkl
</tpl:repeat>
<tpl:repeat name="chapter">
<li>Seite <tpl:var name="page" type="script" /></li>
</tpl:repeat>
END;
preg_match_all("/(<tpl:)([A-Za-z]*)( {1})(.*)((?<!\/)>)((.*)|(?R))(<\/tpl:)(\\2)(>)/isU", $string1, $blocks);
print_r($blocks);
PHP-Code:
lkjkl
</tpl:repeat>
"Geht nicht" gibts nicht, die Nasen von der Smarty-Template-Engine ham das auch hinbekommen und irgendwie parst der PHP-Interpreter ja auch bis ins Unendliche verschachtelte Konstrukte.
Kommentar