Textketten ausgeben
echo oder print
Was in PHP ausgegeben werden will muss in Anführungszeichen stehen ausser Zahlen mit denen gerechnet werden soll. echo und print sind keine richtigen Funktionen sondern es sind Konstrukte, darum kann die Klammer beim Aufruf weggelassen werden.
echo "..." und print "..."
Folgende Beispiele funktionieren mit 'echo' wie mit 'print' gleichermassen. Der Unterschied von 'print' zu 'echo' ist der, dass 'print' einen Wert zurück gibt (siehe am Ende der Seite).
<?php
echo "Textausgabe"; // Text
echo "<br /><b>Fetter Text</b><br />"; // Text und HTML
echo "Hallo \"Lehrling\""; // Escapezeichen - beachte den backslash
echo "<br />"; // XML
echo 123 + 234; // Operation - Zahlen ohne Anführungszeichen
echo "<br />";
echo date("Y"); // Funktion
?>
Fetter Text
Hallo "Lehrling"
357
2012
Strings und Variablen verketten
. und ,
Beispiel und Code:
<?php
# die Variablen (beachte die Leerzeichen):
$h = "Ich heisse ";
$u = " und";
$i = " mein Name ist";
$name = "Marcel Biefer";
# Variablen und Strings können durch Punkte verkettet werden
echo "$h$name$u$i"." "."$name".".";
echo "<br/>";
# Strings werden auch durch Kommas aneinandergefügt weil:
# normalerweise werden Argumente in Klammern von Funktionen durch Kommas getrennt,
# hier wirkt sich das so aus, als würden mehrere Argumente übergeben
echo "$h$name$u$i"," ","$name",".";
echo "<br/>";
# dieses Beispiel geht auch ganz ohne Punkt und Komma
# falls Gänsefüsschen verwendet werden
echo "$h$name$u$i $name.";
echo "<br/>";
# handelt es sich nur um Variablen, braucht es keine Anführungszeichen,
# nur den Punkt (Verkettungsoperator)
echo $h.$name.$u.$i.$name;
# aber der Leerschlag zwischen $i und $name und der Punkt wären Strings
?>
Ich heisse Marcel Biefer und mein Name ist Marcel Biefer.
Ich heisse Marcel Biefer und mein Name ist Marcel Biefer.
Ich heisse Marcel Biefer und mein Name istMarcel Biefer
Einfache Anführungszeichen
'...' und "$..."
Die Art der Anführungszeichen hat einen Einfluss auf die Ausgabe. Wenn der String in 'einfachen Anführungszeichen' (Apostroph) steht, ist das Script schnell, weil nichts geparst wird. Variable und Escape-Zeichen werden nur in "doppelten Anführungszeichen" (Gänsefüsschen) geparst!
Darum sieht man hier die (ungeparsten) Variablen-Namen:
<?php
echo '$h$name$u$i $name.';
?>
Escape Zeichen
"\$ \n \t"
Zeilenumbruch im Quelltext erzeugen
Wenn ich mittels PHP etwas HTML-Code schreiben möchte, erzeuge ich einen Bandwurm im HTML Quelltext.
echo "<h2>Titel</h2><p>Absatz mit Text und einem Zeilenumbruch,<br />der
zwar im Browser einen Zeilenumbruch erzeugt, aber nicht im Quellcode.</p>";
Das Zeichen n steht für 'neue Zeile', damit nicht ein normales n ausgegeben wird, muss ich es escapen:
\n
echo "<h2>Titel</h2>\n<p>Absatz mit Text und einem Zeilenumbruch,\n<br /> ...</p>";
Tabulator im Quelltext erzeugen
Die Gliederung macht den HTML Quelltext leserlich. Zum Einrücken brauche ich auch noch den Tabulator;
das Zeichen t steht für 'Tabulator', damit nicht ein normales t ausgegeben wird, muss ich es escapen:
\t
echo "<h2>Titel</h2>\n\n<p>\n\tAbsatz mit Text ...\n\t<br />... \n</p>";
sieht etwa so aus:
<h2>Titel</h2> <p> Absatz mit Text und einem Zeilenumbruch, <br />der auch im Quellcode gegliedert ist. </p>
"\" \' \\"
Spezialzeichen schreiben
Das Selbe gilt bei den Zeichen " und ' und beim Backslash \:
echo "Gänsefüsschen müssen escaped werden: \"";
echo 'So geht\'s wieder';
echo "\\ schreibt nur einen Backslash";
Print hat Rückgabewert
Der Unterschied von 'print' zu 'echo' ist der, dass 'print' einen Wert zurück gibt.
Beispiel: 'print' gibt an die Variable '$druck' TRUE bzw. 1 zurück. Fragt man nun die Variable ab, wird das ersichtlich:
<?php
$druck=print(12+12);
if ($druck==TRUE) print " wurde gedruckt";
print "<br />Der Wert von \$druck ist: $druck";
?>
Der Wert von $druck ist: 1
Anders dagegen 'echo', das kann nur etwas ausgeben aber liefert keine Erfolgs- oder Fehlermeldung zurück
PHP Kurzform
<?=... ?>
In einer verkürzten Version (nur mal schnell eine Variable ausgeben) wird auf den Befehl echo verzichtet:
<?php $string="Ich bin die Kurzform"; ?> Variable ...
<?=$string ?> ... nur mal schnell ausgeben!
=$string ?>
Je nach Serverkonfiguration läuft dies aber nicht!