Hi,
nachdem man mir erfolgreich eval ausgeredet hat, habe ich bis jetzt sowas als vorübergehende template klasse geschrieben :
(Hinweis: ich mixe atm noch deutsch und englisch, aber diese klasse ist bis jetzt nichts weiter als ein persönliches brainstorming)
Also was bisher geht, ist einfach einen beliebigen Schlüssel im Template durch eine beliebige Variabale zu ersetzen.
So weit, so langweilig...
Wie Parse ich jetzt am besten so blöcke wie <!-- if(bedingung --> ... <!-- endif(bedingung) -->
oder noch schlimmer : <!-- for(startwert, bedingung, var-veränderung --> <!-- endfor -->
Klar, ich könnte jetzt den Quelltext von Smarty durcharbeiten, aber das is mir zuviel Arbeit die ganzen Dateien auseinanderzunehmen, und ich wollte schon einen eigenen Ansatz versuchen...
Wie ich mit REGEX an die tags komme ist kein Problem, nur geht es mir ganz allgemein darum, wie ich diese blöcke finden soll und wie ich diese Suche am effizientesten aufbaue...
hat da jmd. vielleicht paar Allgemeine Ideen für einen Ansatz ?
Soll ich mit rekursiven schleifen (wegen verschachtelung) nach solchen tags suchen, oder gibs da nen besseren weg ?
cya max
nachdem man mir erfolgreich eval ausgeredet hat, habe ich bis jetzt sowas als vorübergehende template klasse geschrieben :
(Hinweis: ich mixe atm noch deutsch und englisch, aber diese klasse ist bis jetzt nichts weiter als ein persönliches brainstorming)
PHP-Code:
class tpl
{
var $template_dir = '';
var $pattern = array();
var $replace = array();
var $delimiter = '/'; // Delimiter for regular expression
var $option = 'i'; // i = ignore Upper/Lower Case
function tpl($dir = '')
{
$this->template_dir = $dir;
}
function insert_key($key, $value)
{
// Key schon vorhanden ?
$found = false;
$c = count($pattern);
for($i=0; $i<$c; $i++) // key suchen
{
if($pattern[$i] == $pattern) {
$replace[$i] = $value;
$found = true;
break;
}
}
if(!$found) { // neuen Key einsetzen
$this->pattern[] = $delimiter.$key.$delimiter.$option;
$this->replace[] = $delimiter.$value.$delimiter.$option;
}
}
function reset_keys()
{
// alle Suchmuster + Ersetzungen löschen
$this->pattern = array();
$this->replace = array();
}
function parse_file($file)
{
// Datei einlesen und Suchmuster durch Ersetzungen ersetzen
$inhalt = preg_quote(file_get_contents($this->template_dir.$file), '/');
$inhalt = preg_replace($patterns, $replaces, $inhalt);
return $inhalt;
}
}
So weit, so langweilig...
Wie Parse ich jetzt am besten so blöcke wie <!-- if(bedingung --> ... <!-- endif(bedingung) -->
oder noch schlimmer : <!-- for(startwert, bedingung, var-veränderung --> <!-- endfor -->
Klar, ich könnte jetzt den Quelltext von Smarty durcharbeiten, aber das is mir zuviel Arbeit die ganzen Dateien auseinanderzunehmen, und ich wollte schon einen eigenen Ansatz versuchen...
Wie ich mit REGEX an die tags komme ist kein Problem, nur geht es mir ganz allgemein darum, wie ich diese blöcke finden soll und wie ich diese Suche am effizientesten aufbaue...
hat da jmd. vielleicht paar Allgemeine Ideen für einen Ansatz ?
Soll ich mit rekursiven schleifen (wegen verschachtelung) nach solchen tags suchen, oder gibs da nen besseren weg ?
cya max
Kommentar