Menu

PHP echo: Text, Variablen und HTML ausgeben

echo gibt einen oder mehrere Strings aus: echo "Hello, $name"; oder echo $a, $b;. So schickt man üblicherweise Text oder HTML an die Seite. print macht dasselbe mit einem Wert und gibt 1 zurück; <?= $x ?> ist die Kurzform in HTML.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

echo gibt Text aus. Schreib echo "Hello";, um einen String auszugeben, echo "Hello, $name";, um eine Variable einzubauen, und echo $a, $b;, um mehrere Werte nacheinander auszugeben. Was echo ausgibt, wird zu der Seite, die der Browser anzeigt, oder zu dem Text, den du im Terminal siehst.

Die erste Zeile nutzt Interpolation (die Variable steht in doppelten Anführungszeichen), die zweite verbindet Strings mit dem Operator ., und die dritte übergibt drei durch Kommas getrennte Werte. Alle drei liefern dieselbe Art von Ergebnis.

HTML mit echo ausgeben

Auf einer Webseite gibt echo meistens HTML aus. Der Browser empfängt den Text und stellt die Tags dar. Klicke auf Run, und der Tab Page zeigt das gerenderte Ergebnis:

Die letzte Zeile verwendet einfache Anführungszeichen, damit die doppelten Anführungszeichen von class="note" nicht escapt werden müssen. In einfachen Anführungszeichen werden Variablen nicht ersetzt, nimm sie also für festen Text. Wenn ein Wert von einem Besucher kommt (aus einem Formular, aus der URL), gib ihn über htmlspecialchars aus, damit er kein HTML einschleusen kann; siehe die Seite zu htmlspecialchars.

Das kurze Echo-Tag <?=

In einer HTML-Datei ist <?= $value ?> die Kurzform von <?php echo $value; ?>. Templates bleiben damit lesbar:

Das kurze Echo-Tag ist immer verfügbar. Das andere Kurz-Tag, <? ohne php, hängt von einer Einstellung ab und sollte nicht verwendet werden.

Mehrere Werte und Zeilenumbrüche ausgeben

echo fügt keinen Zeilenumbruch hinzu. Im Terminal hängst du "\n" (in doppelten Anführungszeichen) oder die Konstante PHP_EOL an. In HTML bewirkt ein Zeilenumbruch im Quelltext sichtbar nichts; verwende <br> oder getrennte Elemente.

Kommas und Punkte liefern dieselbe Ausgabe. Mit Kommas gibt echo jeden Wert nacheinander aus; mit Punkten baut PHP zuerst einen String und gibt ihn dann aus. Zeilenumbrüche haben eine eigene Seite: PHP-Zeilenumbruch.

echo vs print

print ist das ältere Geschwister. Es gibt einen Wert aus und liefert immer 1 zurück, deshalb kann es in einem Ausdruck stehen. echo nimmt beliebig viele Werte und gibt nichts zurück.

echoprint
Werteeiner oder mehrere, durch Kommas getrenntgenau einer
Rückgabenichts (es ist eine Anweisung)1
In einem Ausdruckneinja, $ok = print "x";
Üblicher Einsatzfast allesselten

printf ist wieder etwas anderes: Es formatiert Werte mit Platzhaltern, etwa printf("%05.2f", 3.14159), und wird auf der Seite zu sprintf behandelt.

Ein Array oder ein Objekt ausgeben

echo gibt nur Strings und Werte aus, die sich in Strings umwandeln lassen (Zahlen, Booleans, null). Ein Array lässt sich nicht umwandeln. Dein eigenes PHP gibt eine Warnung und das Wort Array aus:

PHP Warning:  Array to string conversion in /home/index.php on line 3
Array

Um den Inhalt anzuzeigen, nimm die passende Funktion:

Ein Objekt ist strenger: Wenn seine Klasse kein __toString() definiert, beendet echo $object; das Skript mit Error: Object of class User could not be converted to string. Auch Booleans überraschen oft: echo true; gibt 1 aus und echo false; gibt gar nichts aus. Verwende var_dump($value), wenn du den genauen Typ und Wert sehen musst.

Typischer Fehler: echo mit Klammern und Kommas

Weil echo wie eine Funktion aussieht, schreiben viele echo("a", "b");. Das ist ein Parse-Fehler, denn die Klammern umschließen einen einzigen Ausdruck:

PHP Parse error:  syntax error, unexpected token "," in /home/index.php on line 2

Lass die Klammern weg (echo "a", "b";) oder verbinde die Werte (echo("a" . "b");). Dasselbe gilt für print, das nie einen zweiten Wert annimmt, mit oder ohne Klammern.

Häufig gestellte Fragen

Was ist der Unterschied zwischen echo und print in PHP?

Beide geben Strings aus. echo nimmt mehrere durch Kommas getrennte Werte an (echo $a, $b;) und gibt nichts zurück; print nimmt genau einen Wert und gibt 1 zurück, kann also in einem Ausdruck stehen. In der Praxis wird fast überall echo verwendet.

Brauche ich Klammern bei echo?

Nein. echo ist ein Sprachkonstrukt, keine Funktion, also ist echo "Hi"; die normale Form. echo("Hi"); funktioniert, weil die Klammern nur einen Ausdruck gruppieren, aber echo("a", "b"); ist ein Parse-Fehler.

Warum gibt echo false nichts aus?

echo wandelt seinen Wert in einen String um, und false wird zum leeren String "", während true zu "1" wird. Um den Boolean selbst zu sehen, verwende var_dump($x); (gibt bool(false) aus) oder echo var_export($x, true); (gibt false aus).

Was bedeutet <?= in PHP?

<?= $value ?> ist das kurze Echo-Tag, identisch mit <?php echo $value; ?>. Es ist seit PHP 5.4 immer aktiviert und der übliche Weg, Werte in HTML-Templates auszugeben.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S