PHP preg_replace Probleme mit Zeilen umbrüchen und $.
Verfasst: 10.06.2013 05:10
Hallo liebe Gemeinde.
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) Zeile 44
Und bekomme Folgende Fehler meldung
und wenn ich das $ Escape also mit \
Passiert Garnix
aber wenn ich im gegen satzt das hier verwennde
und die variablen so ändere {&$foo} wird es ersetzt.
Mein Nächstes Problem sind Zeilen Umbruche.
Ich wurde gerne das er Diesen code
mit Diesem Ersetzt
Folgendes habe ich Mir Gebastelt
(Das ganze wieder in einer Klasse)
Aber er Ignoriert die die Zeilen Umbrüche.
Kann mir evtuell einer sagen was ich Falsch mache, ich komme mit der Regular Expression nicht klar.
Vielen dank im Vorraus.
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.