Hallo zusammen,
ich entwickel derzeit eine eigene Template Engine und habe nun ein Regex-Problem beim ersetzen. Ich beschreibe mal die Situation:
In einem Template soll ein anderes Template mehrfach eingebunden werden (news.tpl in meinem Beispiel). Daher wollte ich folgenden Ausdruck ersetzen:
	Das schreiben des Templates klappt soweit eigentlich, allerdings nicht das ersetzen von {foreach $foobar news.tpl}.
Hier mal der Ausschnitt aus meiner Klasse:
	
Ich bekomme als Regulären Ausdruck folgendes raus:
	Allerdings wird es halt nicht ersetzt. Kann mir da jemand weiterhelfen?
Gruß Radhad
					ich entwickel derzeit eine eigene Template Engine und habe nun ein Regex-Problem beim ersetzen. Ich beschreibe mal die Situation:
In einem Template soll ein anderes Template mehrfach eingebunden werden (news.tpl in meinem Beispiel). Daher wollte ich folgenden Ausdruck ersetzen:
Code:
	
	{foreach $foobar news.tpl}
Hier mal der Ausschnitt aus meiner Klasse:
PHP-Code:
	
	
/**
    * Der linke Delimter für eine Funktion
    *
    * @access public
    * @var    string
    */
    protected $leftDelimiterF = '{';
    /**
    * Der rechte Delimter für eine Funktion
    *
    * @access public
    * @var    string
    */
    protected $rightDelimiterF = '}';
public function replaceFunctions()
{
// 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);
}
} 
Code:
	
	/{foreach $foobar news.tpl}/isUe
Gruß Radhad
 
          

Kommentar