Hello,
ein Template ist nach meinem Verständnis erst einmal eine Darstellungsvorschrift, die _ohne_ Daten daherkommt, sondern nur mit Platzhaltern für diese.
Und speziell im PHP-Umfeld trenne ich dann zwischen aktiven und passiven Templates.
Aktive sind solche, die eigene PHP-Sequenzen enthalten und somit vom PHP-Parser direkt ausgewertet werden können. Solche Templates kann ich deshalb nicht (oder nur unter Sicherheitsrisiken) von Anwendern erstellen lassen.
Passive Templates würde nur HTML und Platzhalter enthalten. Diese Platzhalter würden dann durch eine spezielle Funktion durch ihre Inhalte ersetzt werden, notfalls solange, bis keine Platzhalter mehr vorhanden sind. Das würde bedeuten, dass die Funktion entweder sirekt Werte einsetzt für den Platzhalter, oder aber ihn expandiert, also durch andere Platzhalter (auch nebst Werten) ersetzt.
Diese Ersetzung funktioniert in PHP bestens mit der Funktion str_(i)replace(), wenn es sich um festgelegte Platzhalter handelt. Wenn man den Platzhaltern nun auch noch wieder Funktionlität zuordnen möchte, dann ist sicherlich ein preg_replace() (in einer Schleife) die bessere Wahl.
Bei str_replace() benötigt man übrigens bei passender Vorbereitung keine Schleife für die stufenweise Substitution, da diese durch das Abarbeiten des Erstzungsarrays schon quasi-rekursiv arbeitet.
ein paar Gedanken dazu findest Du auch im Archiv:
http://forum.de.selfhtml.org/archiv/2009/5/t186387/#m1237998
http://forum.de.selfhtml.org/archiv/2008/8/t175925/#m1159112
Das Archiv ist voll von Gedanken zu Templates und Template-Engines. Du solltest es also auch nochmal selber durchsuchen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg