2 Stimmen

Wie kann man php-Escape-Klammern in heredoc erzeugen?

Ich möchte Klammern in heredoc (in php) ausblenden, zum Beispiel,

$str = <<<EOD    
hello <hello inside>
EOD;

aber wenn ich diese Zeichenfolge echo, erhalte ich nur "hallo" als Ausgabe

6voto

Pekka Punkte 429407

Das hat eigentlich nichts mit PHP zu tun. Es ist Ihr Browser, der die <hello inside> als Tag.

Ich fürchte, es gibt keine automatische Möglichkeit, dies in HTML-Elemente innerhalb von heredoc umzuwandeln; Sie müssten eine htmlspecialchars(); auf die gesamte Zeichenkette anwenden oder HTML-Entities verwenden:

$str = <<<EOD    
hello &lt;hello inside&gt;
EOD;

2voto

Dereleased Punkte 9671

Ich hätte dies einfach als Kommentar zu Pekkas Antwort hinterlassen, aber so kann man die Kommentare nicht formatieren. Sie können HEREDOC/NOWDOC-Blöcke immer wie Zeichenketten behandeln (solange nichts auf den abschließenden Bezeichner in dieser Zeile folgt), also ist dies vollkommen gültig:

$str = htmlentities(<<< EOD
hello <hello inside>
EOD
);

und ist gleichbedeutend mit:

$str = <<< EOD
hello <hello inside>
EOD;
$str = htmlentities($str);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X