Problem bei Template Engine - preg_replace

Radhad

Erfahrenes Mitglied
Hallo zusammen,

ich habe die Template Engine von http://www.developers-guide.net/forums/684,php-ein-eigenes-templatesystem-schreiben mal etwas weiter entwickelt und wollte z.B: für ein Newsscript ein 2 Dimensionales Array in einer "Foreach"-Schleife in ein Template parsen. Das klappt soweit auch, jedoch wird dann das "Zwischentemplate" nicht mehr per preg_replace eingefügt. Hier mal der Quellcode, um den es sich handelt:
PHP:
// foreach Schleife mit 2-Dimensionalen Arrays auflösen
while(preg_match("/".$this->leftDelimiterF."foreach (.*) (.*)".$this->rightDelimiterF."/isUe", $this->template, $backReference))
		{
	$varToReplace = substr($backReference[1], 1);
	$arrTmp = $this->templateVars[$varToReplace];
		
	$templateUnparsed = file_get_contents($this->templateDir.'/'.$backReference[2]);
			
	for($i = 0; $i < count($arrTmp); $i++)
	{
				
		foreach($arrTmp[$i] as $key => $value)
		{
			$templateUnparsed = str_replace($this->leftDelimiter.$key.$this->rightDelimiter, $value, $templateUnparsed);
		}
	}
			
	$this->template = preg_replace("/".$this->leftDelimiterF."foreach \$".$varToReplace." ".$backReference[2].$this->rightDelimiterF."/isUe", $templateUnparsed, $this->template);

}
Es soll folgender String ersetzt werden: {foreach $var foreach.tpl}
Die Variable $var wird vorher per Funktion "assign" an $this->templateVars zugewiesen. Was stimmt denn dann an dem Regulären Ausdruck nicht? Es wird nämlich nichts ersetzt... :(


Gruß Radhad

//EDIT: Sorry für 2 Threads, aber andauernd kommt hier "503 - Service temprarily unavailable"

//EDIT2: Einrückung verbessert, Quelle angegeben die ich vorher vergessen hatte
Falls einer das Problem nicht versteht, bitte posten!
 
Zuletzt bearbeitet:
Vielleicht hilft es ja, wenn ich den Suchstring mal aufschreibe und das, was er ersetzen soll...

Suchstring im preg_replace:
/{foreach \$var foreach.tpl}/ - Das $-Zeichen habe ich escaped.
Folgendes soll er ersetzen:
{foreach $var foreach.tpl}

Allerdings tut er es nicht, weil der Suchstring wohl falsch ist. Kann mir da keiner weiterhelfen?


Gruß Radhad
 
Ich habe es jetzt selbst gelöst: str_replace statt preg_replace tut's auch ;) - und das fehlerfrei :) Hab allerdings noch nen bissl mehr umgebaut.


Danke an alle, die wenigstens mal reingeschaut haben :)




Gruß Radhad
 
Zurück