Webstatt.org - Community seit 2006 - 2012 (2024?)

str_replace: Suchwort gefunden, ersetzt aber nicht

user-343
21.04.2006 21: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

Avatar user-300
21.04.2006 21:44

Du speicherst es auch nicht. Das muss so heissen
$var = str_replace...

lächeln

user-343
21.04.2006 21: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? Fettes Grinsen


Danke lächeln
*Selbsthau*

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

user-343
22.04.2006 11: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 traurig
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'zwinkern;


Wenn was nicht klar ist einfach nach mehr verlangen zwinkern

Avatar user-255
22.04.2006 11:36

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

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-343
22.04.2006 11:55

Ja, user-158ke, hat geholfen lächeln