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:
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!
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);
}
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: