PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
djdevilblack
Mitglied
Beiträge: 19
Registriert: 19.12.2009 22:28

PHP preg_replace Probleme mit Zeilen umbrüchen und $.

Beitrag 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.
DevGames
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

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

Beitrag 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
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
djdevilblack
Mitglied
Beiträge: 19
Registriert: 19.12.2009 22:28

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

Beitrag von djdevilblack »

Kommt auf's gleiche Heraus ändert sich nix.
DevGames
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

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

Beitrag 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']);
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
djdevilblack
Mitglied
Beiträge: 19
Registriert: 19.12.2009 22:28

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

Beitrag 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.
DevGames
Benutzeravatar
cYbercOsmOnauT
Ehemaliges Teammitglied
Beiträge: 3820
Registriert: 18.02.2004 23:02
Wohnort: Göttingen
Kontaktdaten:

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

Beitrag von cYbercOsmOnauT »

Teamviewer ginge... schick mir einfach ne PN mit den Daten
• prof. phpbb-Installation, Reparatur, Rettung nach Hackattacken, sowie PHP/JS Programmierung aller Art
Zend Certified Engineer, Linux Administrator und die Sicherheit von 34 Jahren Programmiererfahrung
• Interesse? Kontakt unter t.birduezen@web-coding.eu
Antworten

Zurück zu „Coding & Technik“