Irgendwie Doofer Threadname. Egal, hauptsache ich find jemand der meine Probleme versteht *g
Irgendwie bekam ich heute Lust etwas als Freizeitbeschäftigung zu machen. Vielleicht wirds irgendwan mal eine Template-Klasse die ich selbst dann brauchen, vielleicht verwerf ichs auch wieder.
Auf jeden Fall hab ich damit Probleme, sonst würde ich hier nicht schreiben *g
Erstmal vorab:
fulltemplate['body'] ist ein array mit etwa folgendem Inhalt:
array(2) {
[0] => array(2) {
["INCLUDE-navi"] = "Eingebundener Inhalt"
["INCLUDE-header"] = "Eingebundener Inhalt"
}
[1] => string(int) {
Das eigentliche Template mit Platzhaltern, vor allendingen garantieren Platzhalten wie {INCLUDE-navi} und {INCLUDE-header}
}
}
Optisch hab ich das ganze mit var_dump gecheckt, sollte soweit eigentlich in Ordnung sein.
Kurz vor der Ausgabe des ganzen füg ich es so zusammen:
public function Template_Finish()
{
//$fulltemplate = $this->fulltemplate;
$head = $this->fulltemplate['head'][1];
$body = $this->fulltemplate['body'][1];
while(list($k,$v) = each($this->fulltemplate['body'][0]))
{
str_replace($k,$v,$body);
//echo "$k mit $v ersetzt";
}
//var_dump($this->fulltemplate['body']);
$fulltemplate = $head.$body;
print $fulltemplate;
}
Nun Mein Problem:
str_place greift nicht. Kein einziger Platzhalter wird in $body ersetzt, auch nicht wenn ich die Eckklammern weglasse.
Falls benötigt kann ich das ganze Script posten, denke aber dass das hier genug sein müsste.
xyz-48ke wie immer im Voraus:
~Waxyz-190
Du speicherst es auch nicht. Das muss so heissen
[COLOR=red]$var = [/COLOR]str_replace...
:)
:O
Öhm, ich sollte wohl eher zu doch eher späteren Zeiten nicht mehr an solchen Sachen arbeiten... Verdammt, warum ist mir das nicht selbst aufgefallen? :D
xyz-48ke :)
*Selbsthau*
EDIT: Und solche Sätze lieber gleich unterlassen... Hört sich ja schrecklich an ô_Ò
Ich nochmal *g*
Irgendwie hab ich grad eine Denkblockade =/
Ich habe ein array das theoretisch beliebig viele Dimensionen haben kann. Und in jeder Dimension möchte ich nach dem vorhandenen Schlüssel "TITLE" den Titel zuweisen.
private function TplReplace($wo,$was,$mitwas)
{
$b = $wo;
while(list($k,$v) = each($b))
{
if(is_array($v))
{
while(list($k2,$v2) = each($v))
{
if(is_array($v2))
{
print_r($v2);
// Stelle
}
elseif($k2 === $was)
{
$wo[$k][$k2] = $mitwas;
}
}
}
elseif($k === $was)
{
$wo[$k] = $mitwas;
}
}
}
Nur kann man das so nicht beliebig tief brauchen :(
Hat wer eine Idee wie ich das Einfacher schreiben könnte?
Funktion würde so aufgerufen werden:
$this->TplReplace(&$his->fulltemplate['head'][0],'TITLE','Eine Überschrift');
Wenn was nicht klar ist einfach nach mehr verlangen ;)
Rekursion heißt das Zauberwort.
function foo()
{
if (is_array($a))
foo($a);
else
// ...
}
Ja, xyz-48ke, hat geholfen :)