Willkommen in der Webstatt Zum Webstatt Blog und Stories
Wasili am 21.04.06 23:27

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.

Danke wie immer im Voraus:
~Wasili

netcup.de Warum gibt es hier Werbung?
sili sili am 21.04.06 23:44

Du speicherst es auch nicht. Das muss so heissen
[COLOR=red]$var = [/COLOR]str_replace...

:)

Wasili am 21.04.06 23:47

: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


Danke :)
*Selbsthau*

EDIT: Und solche Sätze lieber gleich unterlassen... Hört sich ja schrecklich an ô_Ò

Wasili am 22.04.06 13:24

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 ;)

milahu milahu am 22.04.06 13:36

Rekursion heißt das Zauberwort.
function foo()
{
if (is_array($a))
foo($a);
else
// ...
}

Wasili am 22.04.06 13:55

Ja, Danke, hat geholfen :)

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt