Websiteentwicklung: PHP: Ausgabe

Aus Wikibooks

Wechseln zu: Navigation, Suche
Websiteentwicklung PHPBild:Wikibooks buchseite.svg Ausgabe


Inhaltsverzeichnis

[Bearbeiten] Das erste "Hello World!"

Das folgende Script gibt den Text Hello World aus. Dazu erstellen Sie eine neue Datei namens helloworld.php in ihrem PHP-fähigen Webspace. Die folgenden drei Zeilen sind der Inhalt dieser einfachen Datei:

<?php
echo 'Hello World!';
?>

Rufen sie nun die Datei über ihren Web-Browser auf. Je nachdem wo sie die Datei gespeichert haben (Webserver oder lokaler virtueller Server) geben sie ähnlichlautende URL's ein:
http://ich.meinhoster.de/helloworld.php
http://localhost/helloworld.php
Jetzt sehen Sie auf Ihrem Bildschirm

Hello World

[Bearbeiten] Strings (Zeichenketten)

Mit dem Sprachkonstrukt echo ist es möglich einen String (engl. Zeichenkette) an den Client zu senden. Es gibt drei Möglichkeiten einen String zu erzeugen.

[Bearbeiten] Single-Quotes

Bei dieser Variante schreibt man den String den man ausgeben möchte in '...' die man "Single-Quotes" nennt (siehe Beispiel).

echo 'Foobar';

[Bearbeiten] Double-Quotes

Genausogut kann man Strings mit Anführungszeichen "..." deklarieren:

echo "Foobar";

Der Unterschied der Single-Quotes und der Double-Qoutes ist der, dass bei den Double-Quotes Variablennamen ausgewertet werden:

$foo = '123';
echo '$foo';  // Gibt "$foo" aus
echo "$foo";  // Gibt "123" aus
echo $foo;  // Gibt "123" aus

Ebenso stehen bei den Double-Quotes erweiterte Escape-Character zur Verfügung, die weiter unten beschrieben werden.

[Bearbeiten] Heredoc

Heredoc arbeitet über Bezeichner und die Kette "<<<". Systematisch arbeitet es wie die Double-Quotes, nur dass es keine doppelten Anführungszeichen besitzt und diese nicht im Text escaped werden müssen. Es dürfen aber alle Escape-Regeln verwendet werden. Die Heredoc-Ausgabe wird mit "<<<" und einem eindeutigen Bezeichner eingeleitet, der am Ende des Strings, der ausgegeben werden soll, die Zeichenkette wieder schließt

echo <<<EOD
  foo
  bar
  "foobar"
EOD;

Wie man sieht, ist auch eine Ausgabe über mehrere Zeilen problemlos möglich. Wichtig ist, dass der beendende Bezeichner in seiner Zeile nur sich selbst und ein ";" besitzen darf, also auch keine Einrückungen oder sonstiges. Ansonsten würde PHP den Bezeichner nicht finden und ein Fehler am Ende des Scripts ausgeben, dass der Bezeichner nicht gefunden wurde.

[Bearbeiten] Zeichenketten verbinden

Vielleicht habt ihr euch schon gefragt wie man bei Single-Quotes Variablen ausgibt. Mit eurem jetzigem Wissensstand müsste man das so machen:

$var = 'Hallo';
echo $var;
echo ' Welt'; // Leerzeichen, da ansonsten HalloWelt ausgegeben werden würde

Etwas kompliziert, oder? Man mag gar nicht daran denken wie das erst einmal mit realen Beispielen aussehen würde. echo kann zwar mehrere Zeichenketten ausgeben, allerdings ist eine solche Schreibweise den meisten Leuten unbekannt und deshalb ist davon (trotz der geringfügigen Performanceverbesserung) abzuraten. Die Lösung des Problems liegt in dem Verkettungs-Operator (ein Operator macht etwas mit Variablen, mehr dazu im Kapitel Operatoren). Dieser Operator ist ein Punkt (.), welcher einfach zwischen zwei (oder mehr) Strings gepackt wird, damit diese zu einem String werden. Die Ausgabe würde dann wie folgt aussehen:

$var = 'Hallo';
$var2 = $var.' Welt'; // Verkettet $var und den String ' Welt' (der keinen Namen hat) zu einem String $var2
echo $var2; // Gibt aus: Hallo Welt
 
echo $var.' Welt'; // Ausgabe und Verkettung können auch in einem Schritt passieren

[Bearbeiten] Zeichen "escapen"

Bestimmte Zeichen besitzen besondere Aufgaben in einem String, wie zum Beispiel das Markieren einer Variable ($) in Double-Quotes (siehe unten). Falls man das Zeichen allerdings selbst braucht (um z.B. einen Dollar Betrag auszugeben) dann muss man das gewünschte Zeichen "escapen", d.h. es mit dem Prefix '\' versehen damit PHP weiß, dass dieses Zeichen an sich ausgegeben werden soll und es nicht vom Parser geparst wird.

So muss zum Beispiel innerhalb eines Single-Quotes das Single-Quote (') escaped werden, da es sonst als Ende des Strings ausgewertet werden müsste. Das gleiche gilt ebenfalls für die Double-Quotes. Um nun das Escape-Zeichen (auch Backslash genannt) selbst darzustellen, muss es ebenfalls escaped werden (\\).

echo 'Foo\'bar';
echo "Foo\"bar";
echo 'Foo\\bar';

PHP interpretiert eine Escape-Kette, die keine Bedeutung besitzt nicht, so dass dann ebenfalls das Escape-Zeichen mit ausgegeben wird.

Die Double-Quotes besitzen neben der Möglichkeit Variablennamen auszuwerten noch erweiterte Escape-Characters, so muss z.B. das Dollar-Zeichen ($) ebenfalls escaped werden, da es sonst als Einleitung einer Variable gelten würde.

\n Zeilenvorschub (neue Zeile)
\r Wagenrücklauf
\t horizontaler Tabulator
\\ Backslash (Rückstrich)
\$ Dollar-Symbol

[Bearbeiten] Interpretation von Double-Quotes

Bei den Double-Quotes werden die Variablen in dem String interpretiert. Wenn man also eine Variable $var in einen String mit Double-Quotes einfügt dann wird der Inhalt der Variable anstelle des Variablen Namens gesetzt. Das Funktioniert bei den Single-Quotes nicht.

$var = 'Hallo';
echo "Wir sagen $var"; // Ausgabe: Wir sagen Hallo
echo 'Wir sagen $var'; // Ausgabe: Wir sagen $var

Dies kann aber teilweise problematisch werden, wenn die Schreibweise nicht auf eine eindeutige Variable verweisen kann. Wenn zum Beispiel die Variable teil eines Wortes ist weiß PHP nicht wo die Variable aufhört und nimmt deshalb alle Zeichen bis zum nächsten Leerzeichen als Variablen Name. Das kann aber unter umständen nicht gewünscht sein, deshalb setzt man in solchen Fällen geschweifte Klammern ({..}) um zu kennzeichnen, was zu der Variable gehört und was nicht.

$foo = "1";
echo "$foo"; // Gibt "1" zurück
echo "$foo2"; // Gibt eine leere Zeichenkette zurück, da die Variable $foo2 nicht existiert 
echo "${foo}2"; // Gibt 12 zurück
echo "{$foo}2"; // Gibt 12 zurück

Dies ist vor allem für die Interpretation von Arrays oder Objekten interessant (mehr dazu später).

[Bearbeiten] Ausgeben von Variablen

Ein häufig gemachter Fehler ist die Annahme, dass man immer bei der Ausgabe Anführungszeichen braucht. Codes wie echo "$var"; sind allerdings klar unsinnig und kosten nur zusätzliche Zeit (bei der Programmierung sowie Ausführung des Codes), die man sich einfach sparen kann. echo $var; gibt einfach die gewünschte Variable aus.

[Bearbeiten] Einfache oder doppelte Anführungszeichen?

Geschmackssache. Die Einen benutzen lieber die einfachen Anführungszeichen, da der Code besser zu lesen und schneller - allerdings verschwindend gering - ist, da dort die Zeichenkette nicht erst nach Variablen durchsucht werden muss, die Anderen hingegen benutzen lieber die doppelten Anführungszeichen da der Code "einfacher" zu schreiben ist. Letztendlich liegt es bei dem Programmierer (oder beim Style Guide wenn du in einem Team programmierst) zu entscheiden wie man Strings angeben will, es empfiehlt sich aber grundsätzlich sich mit beiden Schreibweisen auseinander gesetzt zu haben damit man flexibel beim Code lesen sein kann.


[Bearbeiten] Ausgabe mit print und echo

Wie du in den Beispielen davor schon gesehen hast kann man mit echo '...'; bzw. echo "..."; Zeichenketten oder Variablen ausgeben. print '...'; macht genau das selbe, liefert jedoch immer 1 als Rückgabewert zurück, das braucht dich allerdings im Moment nicht zu interessieren. Ob nun echo oder print ist letztendlich aus der technischen Sicht egal. Da echo allerdings verbreiteter ist, bietet es sich an, echo zu benutzen.

echo 'foo';
print 'foo';


[Bearbeiten] Übungen

Nun bist du an der Reihe. Versuche diese Aufgaben zu lösen - aber probiere nicht nach oben zu schauen ;-).

  • Programmiere mit PHP ein Skript, welches den Text "Hallo. Morgen geht die Sonne auf" ausgibt


Zurück zu Grundlagen | Hoch zu PHP | Vor zu Kommentare
Persönliche Werkzeuge
Buch erstellen
  • Artikel hinzufügen
  • Hilfe zu Sammlungen