Texte ausgeben mit echo

Um Texte auszugeben, gibt es in PHP mehrere Möglichkeiten.

Sprachkonstrukt echo

In PHP verwendet man häufig das Sprachkonstrukt echo, um Inhalte am Bildschirm auszugeben. Dabei wird der auszugebende Text innerhalb von einfachen oder doppelten Hochkommas eingefügt. Somit kann echo wie folgt verwendet werden.

echo 'Beliebiger Text';

echo "Beliebiger Text";

Wie bei jeder Anweisung muss auch bei echo der Abschluss mit einem Semikolon erfolgen. Die Verwendung von einfachen oder doppelten Hochkommas ist deshalb wichtig, damit der PHP-Interpreter diesen Teil als Text behandelt und nicht als eine PHP-Anweisung interpretiert. Die Wichtigkeit dieser Regel kann man anhand eines Beispiels feststellen. Angenommen, man möchte die Adresse einer Website in der Form http:...... ausgeben und verwendet keine Hochkommas.

echo http://irgendeineseite;

Mit einem Doppelslash wird ein Kommentar eingefügt. Das hätte in diesem Beispiel zur Folge, dass der hintere Teil nach http: als ein Kommentar gewertet werden würde, inklusive dem Semikolon. Das würde wiederum einen Syntaxfehler hervorrufen und am Bildschirm würde nichts ausgegeben werden. Daher ist es wichtig, dass man Texte mit einfachen oder doppelten Hochkommas umschließt. Der fehlerhafte Code würde wie folgt korrigiert werden.

echo 'http://irgendeineseite';

Diese Anweisung würde wie gewünscht die angegebene Adresse ausgeben. Denn alles was zwischen diesen beiden Hochkommas steht, ist für den PHP-Parser kein PHP-Befehl. Somit würde ein // nicht als Kommentar gewertet werden.

Unterschied zwischen einfachen und doppelten Hochkommas (Anführungszeichen)

Analog zum einfachen Hochkomma, könnte man den Text auch innerhalb von Anführungszeichen " einfügen. Diese haben denselben Sinn. Eine Anweisung, die wie folgt aussieht, wäre auch völlig korrekt.

echo "http://irgendeineseite";

Welche Methode man nimmt, spielt keine Rolle. Es gibt jedoch einige Unterschiede, weshalb in der Praxis eher die einfachen Hochkommas verwendet werden. Das hat einen ganz besonderen Grund. Innerhalb von einfachen Hochkommas müssen nämlich Anführungszeichen nicht maskiert werden und umgekehrt. Dazu zwei Beispiele.

echo 'Text, der in "Anführungszeichen" ist';
echo "Hans' Auto";

Da man bei der Erstellung von Websites häufig Attribute in Anführungszeichen setzt, schreibt man den gesamten Text in einfachen Hochkommas, sodass man die Anführungszeichen nicht maskieren muss. Ein Beispiel für ein Bild.

echo '<img src="bild.jpg">';

Würde man nämlich den gesamten Text in doppelten Anführungszeichen setzen, dann würde der Text nach <img src= durch das Anführungszeichen wieder beendet werden und man hätte einen Fehler.

echo "<img src="bild.jpg">";

Daher setzt man die Texte eher in einfachen Hochkommas. So kann man innerhalb der Zeichenkette Anführungszeichen setzen, ohne dass diese den Text beenden und ohne dass man sie maskieren muss. Da man mit PHP häufig HTML-Code ausgibt, die Anführungszeichen enthalten (für Attribute), ist das die empfehlenswerte Variante.

Ausgeben von Variablen

Mit echo kann man nicht nur Texte ausgeben, sondern auch die Werte von Variablen. Die Variablen werden dabei nicht in einfachen Hochkommas gesetzt. Beim folgenden Beispiel würde der Text $var ausgegeben werden und nicht der Wert der Variable.

echo '$var';

Um z.B. den Wert der Variable $var auszugeben, lässt man die einfachen Hochkommas weg.

echo $var;

Hierbei gibt es Unterschiede zu Anführungszeichen. Setzt man eine Variable innerhalb der Anführungszeichen, wird der Wert der Variable ausgegeben. So kann man auch normalen Text mit den Werten von Variablen zusammen ausgeben, ohne die Zeichenkette unterbrechen zu müssen, wie das bei einfachen Hochkommas der Fall ist. Bei den folgenden Codezeilen würde an den entsprechenden Stellen der Inhalt der Variable $var ausgegeben werden.

echo "$var";

echo "Text mit einer $var in Zeichenkette";

Maskieren von Sonderzeichen

Es gibt noch eine weitere Möglichkeit, Sonderzeichen wie z.B. Anführungszeichen auszugeben, ohne dass diese das Ende des Textes bedeuten. Mit einem Backslash \, gefolgt von dem Sonderzeichen, werden diese maskiert, sodass sie für den PHP-Interpreter als Text betrachtet werden. Beim HTML-Code für ein Bild könnte man auch den folgenden Code verwenden.

echo "<img src=\"bild.jpg\">";

Durch die Maskierung mit dem Backslash wird diesmal der Text nicht nach <img src beendet und das wäre ein korrekter Code. So wäre es auch möglich, andere Sonderzeichen als Text zu maskieren, z.B. ein einfaches Hochkomma.

echo 'Hans\' Auto';

Dieser Weg ist zwar weniger elegant, da viele Backslashes den Code häufig unleserlich machen. Auch wenn man das vermeiden sollte, bleibt manchmal nur dieser Weg, um die Texte in der gewünschten Form auszugeben.

Ausgeben mit der Heredoc-Syntax

Es gibt in PHP eine Möglichkeit, Texte und Inhalte von Variablen auszugeben, ohne dass man einfache oder doppelte Hochkommas maskieren muss, sodass die Lesbarkeit von gemischten Texten gesteigert wird. Man nennt die Schreibweise auch Heredoc-Syntax, die man in Verbindung mit echo verwenden kann. Der Inhalt wird innerhalb eines beliebigen Bezeichners eingefügt, der mit <<< eingeleitet und mit einem Semikolon abgeschlossen wird. Beim Abschluss ist darauf zu achten, dass zwischen dem Zeilenanfang und dem Bezeichner keine Leerzeichen, Tabs oder sonstige Zeichen vorkommen.

echo <<<BEZ
Beliebiger Text, der auch $var enthalten 
und über mehrere Zeilen gehen kann. Man kann
auch "Texte in Anführungszeichen" oder in
'einfachen Hochkommas' setzen.
BEZ;

Syntax-Kurzform von echo

Es gibt eine Syntax-Kurzform für echo, die vor PHP 5.4 nur funktionierte, wenn in der Konfigurationsdatei php.ini die Einstellung short_open_tag eingeschaltet war. Ab PHP 5.4 ist das jedoch nicht mehr von dieser Einstellung abhängig. Hierbei wird nach dem Einleiten des PHP-Bereichs mit <? (Kurzform) und einem Gleichheitszeichen der auszugebende Inhalt angehängt.

<?='Textausgabe in Kurzform';?>
<?="Man kann auch $var ausgeben";?>
<?=$var;?>
<?='Funktioniert auch über mehrere Zeilen 
und ohne Abschluss mit Semikolon'?>

Mehrere, mit Komma getrennte Werte angeben

Es ist auch möglich, mehrere Werte mit einem Komma getrennt als Parameter anzugeben. Hierbei gelten dieselben Regeln für einfache Hochkommas und Anführungszeichen.

echo 'Beliebiger Text 1 ', 'Beliebiger Text 2';
echo "Beliebiger Text 1 ", "Beliebiger Text 2";

echo $var1, $var2;
echo "$var1", "$var2";

Hierbei gibt es Unterschiede zum Sprachkonstrukt print und zur Funktion printf. Bei diesen beiden ist die kommagetrennte Angabe mehrerer Parameter nicht möglich, wie das bei echo der Fall ist.