Tach!
Liebe Kinder, wenn ihr das zu Hause nachbauen wollt, könnt ihr noch folgende Bemerkungen berücksichtigen.
function GetTemplateReplace($arTemplate) {
if(!isset($arTemplate['TemplateFile'])) {
die ('Fatal: $arTemplate['TemplateFile'] ist nicht gesetzt!'."\n");
}
$template=file_get_contents($arTemplate['TemplateFile']);
Ein Script beim kleinsten Fehler sterben zu lassen ist keine gute Idee. Zudem solltet ihr noch eine wichtigere Prüfung einbauen, die nach der Existenz oder besser der Lesbarkeit der Datei - oder $template auswerten, ob es mit einem false einen Zugriffsfehler signalisiert.
$keys=array_keys($arTemplate);
foreach ($keys as $key) {
if ($key != 'TemplateFile') {
$replace[]=$arTemplate[$key];
$search[]='%%%'.$key.'%%%';
}
}
return str_replace($search, $replace, $template);
Alternative:
Man muss nicht erst die Array-Keys ermitteln, das hat foreach bereits eingebaut. Ich würde ja den Template-Dateinamen als Extra-Parameter übergeben und nicht mit den Nutzdaten mixen [*]. Ansonsten braucht es hier noch ein unset($arTemplate['TemplateFile']);
$search = array();
foreach ($arTemplate as $key => $content)
$search[] = '%%%'.$key.'%%%';
return str_replace($search, $arTemplate, $template);
Das $replace-Array kann ruhig irgendwelche Keys enthalten, die stören nicht. Man braucht sie also nicht extra zu behandeln und kann $arTemplate direkt verwenden.
Statt foreach kann man auch mit array_map() und einer selbst geschriebenen Funktion (seit PHP 5.3 kann sie auch anonym sein) arbeiten.
[*] Damit wird auch die erste Prüfung nach dem Vorhandensein des Schlüssels überflüssig.
dedlfix.