Verstehe Tut über Templates net ganz

PsychoSam

Mitglied
Hallo
ich mach mich grad über templates schlau und habe mir mo das tut vom
Nils Adomeit angeschaut
war ja auch weiter kein prob bis ich auf diese zwei zeilen gestossen bin und die ersteh ich irgendwie nicht mal im ansatz:
PHP:
 foreach($var_array as $key => $value)
   {
    //$regex[var_name] : {VARIABLE}
    $regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";
    $this->temp_content = preg_replace($regex['var_name'], $value, $this->temp_content);
   }


danke für die hilfe
 
Da sollte ich doch gleich mal direkt antworten, geht
schließlich um mich :-)

Besagte Zeilen sind das eigentliche Kernstück des
Template Parsers, da sie die vorher definierten
Platzhalter mit dem zugewiesenen Inhalt ersetzten.

Ich geh daß einfach mal zeilenweise durch, ja ?

PHP:
foreach($var_array as $key => $value)
{

"Foreach" ist eine Schleife, also eine Kontrollstruktur
die ein "Array", also ein Feld Eintrag um Eintrag ab-
arbeitet. In unserem Falle ist daß das Feld in dem
die Platzhalter einen Inhalt zugewiesen bekommen.

Wenn du dir die Template Datei in meinem Tutorial
anschaust, fallen dir doch bestimmt die komisch
geklammerten Ausdrücke auf, oder ?

z.B. {TITLE} oder {TEXT}

Diese sind sogenannte Platzhalter und werden durch
den Parser mit Inhalt ersetzt.

PHP:
    $regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";

Diese Zeile setzt aus dem Variablennamen und einem
vorher von mir erstellten regulären Ausdruck eine Art
Filter für den jeweiligen Platzhalter zusammen.

Mit diesem "RegEx" wird nachher im Template nach
den Platzhaltern gesucht.

PHP:
    $this->temp_content = preg_replace($regex['var_name'], $value, $this->temp_content);

In dieser Zeile wird das Template durchsucht und die
Platzhalter werden ersetzt. Danach wird das ganze
Konstrukt wieder in die Variable "temp_content"
gespeichert, das uns das Ergebniss nicht verloren geht.

Hoffe du konntest mit meiner Erklärung etwas anfangen,
sonst schreib nochmal.

Jona aka Nils
}
 
mal ne frage nebenbei
haste es abgefangen das wenn in der Variable{} vorkommt das er das auch umsetzt?

im phplib ist es jedenfalls so das er dann den Wert in den Klammer ebenfalls wieder als Platzhalter interpretiert deswegen hatte ich mir damals auch ne kleine Funktion geschrieben die bevor die Variablen ans Template übergeben werden erst die bestimmte zeichen in sein ansii nachbarn geändert werden!
PHP:
function charToAscii($array){
	foreach($array as $type => $value){
		$array[$type] = str_replace("<","<",$value);
		$array[$type] = str_replace(">",">",$array[$type]);
		$array[$type] = str_replace("{","{",$array[$type]);
		$array[$type] = str_replace("}","}",$array[$type]);
	}
	return $array;
}
 
Nein, habe ich nicht wirklich drüber nachgedacht,
ist ja auch nur eine ganz abgespeckte Version
eines Template Parsers die die Grundbegriffe
verdeutlichen soll.

Trotzdem Danke für den Code Snippet.

Jona
 
Zurück