Ich arbeite gerade für ein Framework an einem Template System.
Als Erstes wollte ich das wenn im dem Template sowas wie {$foo} Steht es mit <?php echo $foo; ?> Ersetzt wird.
Dazu habe ich mir Folgendes Gebastelt. (Das Ganze Lauft über einen Klasse)
Code: Alles auswählen
$this->template['content'] = preg_replace("({$(.*?)})", '<?php echo $$1; ?>', $this->template['content']);
Und bekomme Folgende Fehler meldung
Code: Alles auswählen
Parse error: syntax error, unexpected '(', expecting variable (T_VARIABLE) or '$' in C:\xampp\htdocs\includes\classes\template.class.php on line 44
Code: Alles auswählen
$this->template['content'] = preg_replace("({\$(.*?)})", '<?php echo $$1; ?>', $this->template['content']);
aber wenn ich im gegen satzt das hier verwennde
Code: Alles auswählen
$this->template['content'] = preg_replace("({&(.*?)})", '<?php echo $1; ?>', $this->template['content']);
Mein Nächstes Problem sind Zeilen Umbruche.
Ich wurde gerne das er Diesen code
Code: Alles auswählen
{foreach $foo as $key=>$value}
<p>{$key} => {$value}</p>
{foreachelse}
<p>$foo ist Leer</p>
{/foreach}
Code: Alles auswählen
<?php if(!empty($foo)) {
foreach($foo as $key=>$value) {
<p>{$key} => {$value}</p>
}
} else {
<p>$foo ist Leer</p>
} ?>
(Das ganze wieder in einer Klasse)
Code: Alles auswählen
$this->template['content'] = preg_replace("({foreach (.*?) as (.*?)}(.*?){foreachelse}(.*?){/foreach})", "<?php if(!empty($1)) { foreach($1 as $2) { ?> $3 <?php } } else { ?> $4 <?php } ?>", $this->template['content']);
Kann mir evtuell einer sagen was ich Falsch mache, ich komme mit der Regular Expression nicht klar.
Vielen dank im Vorraus.