Ich habe das so gelöst:
Code:
function parse_tpl ($templates, $values = array())
{
if (!is_array ($templates))
{
$templates = explode (',', $templates);
}
foreach ($templates as $template)
{
@ $tpl_text .= "\r\n\r\n" . file_get_contents($_SESSION['tplpath'] . $template . '.tpl');
}
$GLOBALS['tpl_resarr'] = $values;
$tpl_text = preg_replace ('/\{tpl\|(.+?)\}/e', '$GLOBALS[\'tpl_resarr\'][\\1];', $tpl_text);
unset ($GLOBALS['tpl_resarr']);
echo $tpl_text;
}
parse_tpl ('header,menu', array ('sitename' => $sitename));
Das ist eine Funktion zum parsen von templates. Im Template steht dann sowas wie {tpl|sitename} was dann ersetzt wird falls der Wert im Array auftaucht.
das mit dem tpl| hatte ich vorgesehen, um auch im template noch geschweifte Klammern verwenden zu können (falls da z.B. noch Javascript drin ist)
Die ersetzung erfolgt durch preg_replace, was in meinen Augen besser geeignet ist als str_replace, da man den regulären Ausdruck relativ einfach erweitern/anpassen kann.