22 Stimmen

PHP: Echo HTML Code mit beiden Arten von Anführungszeichen ohne Escape

Frage von Chematik | 23.03.2012 um 23:40

Ich habe in PHP oftmals das Problem, dass ich mit echo lange HTML Texte ausgeben möchte, die beide Arten von Anführungszeichen enthalten können, also " und ', zum Beispiel weil auch noch JavaScript enthalten sein kann.

Nehmen wir zum Beispiel folgenden HTML-Code:

<input name="test" value="" onkeyup="$('#a').show();">

Wenn ich diesen HTML Code mit echo ausgeben würde, zum Beispiel mit

echo '<input name="test" value="" onkeyup="$(\'#a\').show();">';

müsste ich die einfachen Anführungszeichen ' mit \ escapen. Bei diesem einen Code-Fetzen wäre das nicht schlimm. Aber ich habe eine Menge von Code und da wäre es sehr umständlich immer die Escapezeichen reinzuschreiben.

Gibt es dafür nicht eine bessere, elegantere Lösung?

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

Zum Glück gibt es dafür eine elegante Lösung. Das Zauberwort heißt heredoc oder nowdoc. 

Hier mal ein Beispiel für heredoc:

$foo='test';

echo <<<EOT
<p>Das ist ein Beispiel für "heredoc" und
das ist eine Variable '$foo'.</p>
EOT;

Alles was zwischen "echo <<<EOT" und "EOT;" steht, wird ausgegeben. Auch Zeichen wie <, >, ' und " können notiert werden. Wichtig ist, dass "echo <<<EOT" und "EOT;" am Anfang der Zeile stehen und dahinter keine anderen Zeichen (auch keine Leerzeichen) vorkommen, sonst kommt es zu einer Fehlermeldung. So kannst du problemlos deinen HTML Code ausgeben und darüberhinaus werden auch noch Variablen wie im Beispiel $foo ausgewertet und angezeigt.

Wenn du die Variablen nicht ausgewertet haben möchtest, kannst du einfach folgende Syntax verwenden:

echo <<<'EOD'
<p>Hier werden Variablen nicht mehr ausgewertet</p>
EOD;

Schon werden die Variablen nicht mehr ausgewertet. Diese Variante nennt sich nowdoc.
24.03.2012 um 17:24

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zeit und Performance messen

Tutorial | 0 Kommentare

PHP: Eine E-Mail versenden

Tutorial | 0 Kommentare

CSS-Stylesheets in HTML einbinden

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.