Seite 1 von 1

PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 10.06.2013 05:10
von djdevilblack
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)

Code: Alles auswählen

$this->template['content'] = preg_replace("({$(.*?)})", '<?php echo $$1; ?>', $this->template['content']);
Zeile 44
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
und wenn ich das $ Escape also mit \

Code: Alles auswählen

$this->template['content'] = preg_replace("({\$(.*?)})", '<?php echo $$1; ?>', $this->template['content']);
Passiert Garnix
aber wenn ich im gegen satzt das hier verwennde

Code: Alles auswählen

$this->template['content'] = preg_replace("({&(.*?)})", '<?php echo $1; ?>', $this->template['content']);
und die variablen so ändere {&$foo} wird es ersetzt.

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}
mit Diesem Ersetzt

Code: Alles auswählen

<?php if(!empty($foo)) {
		foreach($foo as $key=>$value) {
			<p>{$key} => {$value}</p>
		}
	} else {
		<p>$foo ist Leer</p>
	} ?>
Folgendes habe ich Mir Gebastelt
(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']);
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.

Re: PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 10.06.2013 10:28
von cYbercOsmOnauT
djdevilblack hat geschrieben:

Code: Alles auswählen

$this->template['content'] = preg_replace("({$(.*?)})", '<?php echo $$1; ?>', $this->template['content']);
Deine Delimiter fehlen. Wundert mich, dass diese Zeile überhaupt funktioniert.

Code: Alles auswählen

$this->template['content'] = preg_replace("/\{$(.*?)}/s", '<?php echo $$1; ?>', $this->template['content']);
Was kommt so raus?

Viele Grüße,
Tekin

Re: PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 10.06.2013 21:42
von djdevilblack
Kommt auf's gleiche Heraus ändert sich nix.

Re: PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 10.06.2013 22:38
von cYbercOsmOnauT
Mea culpa.. ich hab vergessen das $ welches String- oder Zeilenende bedeutet zu escapen

Code: Alles auswählen

$this->template['content'] = preg_replace("/\{\$(.*?)}/s", '<?php echo $$1; ?>', $this->template['content']);

Re: PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 11.06.2013 01:08
von djdevilblack
Danke für deine Hilfe aber das wird immer noch nicht richtig Geparst.
Vieleicht hast du Ja TeamViewer oder Skype dann könntest du dir Das ganze Direckt mal Angucken.
Wurde auch etwas dafür Zahlen.

Mit freundlichen Grüßen DjDevilBlack.

Re: PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Verfasst: 11.06.2013 01:13
von cYbercOsmOnauT
Teamviewer ginge... schick mir einfach ne PN mit den Daten