Skip to content

Alles für WordPress, Webentwicklung — und mehr

HTML in PHP: echo, heredoc, nowdoc und das Verlassen von PHP

HTML in PHP: echo, heredoc, nowdoc und das Verlassen von PHP

Fügen Sie fertiges Markup ein und Sie erhalten fünf Varianten, es in eine PHP-Datei zu legen, jede mit dem richtigen Escaping. Alles läuft in Ihrem Browser: Das Markup wird nirgendwohin gesendet und nirgends gespeichert.

Ziehen Sie eine .html hierher — die Datei wird lokal gelesen.
Verarbeitung des Markups

Am nächsten an dem, was codebeautify liefert, aber mit Escaping: Ohne dieses zerbricht jedes Apostroph im Markup die PHP-Zeichenkette.

Fügen Sie oben HTML ein — der PHP-Code erscheint hier.

Das Markup verlässt Ihren Browser nicht — die Umwandlung läuft lokal, ohne Versand an einen Server.

Fünf Wege und wann welcher passt

echo zeilenweise — Zeile für Zeile, jede in einem eigenen Aufruf. Der vertrauteste Anblick, praktisch, wenn zwischen den Zeilen eine Bedingung oder eine Schleife stehen soll. nowdoc — ein Block, in dem PHP nichts interpretiert: weder Escape-Sequenzen noch Variablen. Das Markup landet Byte für Byte im Code und braucht überhaupt kein Escaping. Das ist der sicherste Weg, fremdes HTML zu übernehmen. heredoc — derselbe Block, aber mit Variablen: $title darin wird eingesetzt. Deshalb werden Dollarzeichen und Backslash maskiert, die Anführungszeichen dagegen nicht. Zeichenkette in einer Variablen — das Markup wird per Verkettung in $html gesammelt. Nötig, wenn es aus einer Funktion zurückgegeben oder an eine Template-Engine übergeben statt sofort ausgegeben werden soll. PHP verlassen — das Tag schließen und das Markup unverändert ausgeben. Genau das empfiehlt die PHP-Dokumentation: kein Escaping, keine Kosten für das Zusammenkleben von Zeichenketten, und die Syntaxhervorhebung im Editor funktioniert weiter. Das schließende ?>-Tag fehlt im erzeugten Code absichtlich. Jedes Zeichen danach — selbst ein versehentlicher Zeilenumbruch am Dateiende — gelangt in die Ausgabe und erzeugt das klassische «headers already sent».

Warum Konverter ohne Escaping nicht lauffähigen Code liefern

Der verbreitetste Online-Konverter von HTML zu PHP tut genau eines: Er zerschneidet den Text in Zeilen und klebt echo '<Zeile>'; zusammen. Eine Zeichenersetzung gibt es dort überhaupt nicht, und das zeigt sich schon beim ersten echten Stück Markup. Ein Attribut in einfachen Anführungszeichen — <a href='/price'> — schließt die PHP-Zeichenkette mitten im Text. Danach folgt ein Syntaxfehler. Ein Backslash am Zeilenende verschluckt das schließende Anführungszeichen und klebt zwei Zeilen zu einer zusammen. Ein Dollarzeichen in doppelten Anführungszeichen oder in einem heredoc macht aus $total einen leeren Wert. trim() auf jeder Zeile schneidet stillschweigend die Einrückung in pre, textarea und code weg — auf der Seite ändert sich, was der Besucher sieht. Alle Zeilen werden ohne Umbrüche zusammengeklebt, sodass das entstehende HTML zu einer endlosen Zeile wird. Hier ist jeder dieser Fälle behandelt, und die heredoc-Marke wird so gewählt, dass sie mit keiner Zeile Ihres Markups zusammenfällt: Sonst würde der Block in der Mitte schließen.

Häufige Fragen