1. Strings ausgeben
Hauptziel eines PHP-Skriptes ist es, unabhängig von der Logik die dahintersteckt, eine Ausgabe zu erzeugen. Beispielweise eine Auflistung der Newsbeiträge. Um in einem PHP-Skript Texte auszugeben (ohne den PHP-Modus zu verlassen) wird üblicherweise der Sprachkonstrukt echo verwendet. Ein Beispiel könnte wie folgt aussehen.
<?php
echo 'Ein Text der ausgegeben wird';
?>
Das Erste was auffällt ist die Tatsache dass die Klammern der Funktion fehlen. Das liegt daran dass echo keine Funktion sondern ein spezieller Sprachkonstrukt ist. Das Manual sagt dazu folgendes.
echo() is not actually a function (it is a language construct), so you are not required to use parentheses with it.
Das Zweite ist dass der Text der ausgegeben werden soll
innerhalb von zwei Apostrophs '
steht. Auf diese Weise wird
(unabhängig von echo
) eine Zeichenkette (Fachbegriff: String) mit
dem entsprechenden Inhalt erzeugt.
Dieser String dient dann als Parameter für den echo-Sprachkonstrukt und echo
gibt diesen String aus. Wenn nun ein PHP-Skript mit diesem Code hochgeladen wird und
das Skript aufruft so wird folgender Text ausgegeben.
Ein Text der ausgegeben wird
Fügen wir nun einen weiteren echo-Befehl in unser PHP-Skript ein.
<?php
echo 'Ein Text der ausgegeben wird';
echo 'Nun folgt ein anderer Text';
?>
Wenn das Skript nun auf einem Webserver läuft wird folgender Text ausgegeben.
Ein Text der ausgegeben wirdNun folgt ein anderer Text
Der zweite String wurde hier einfach hinter den anderem String ausgegeben. Was anderes
steht auch nicht im PHP-Skript. Einmal wurde ein String ausgegeben, dann ein
weiterer String. Obwohl die beiden echo-Befehle mit einem Zeilenumbruch
getrennt sind werden die Strings so wie sie sind ausgegeben. Um einen
Zeilenumbruch in der Ausgabe zu haben können wir z.B. das HTML-Element
<br/>
benutzen.
2. HTML-Code ausgeben
HTML-Code bzw. die besonderen Zeichen <
und >
können in Strings ohne Probleme benutzt werden. Somit können wir am Ende
des ersten Strings das HTML-Element <br/>
anfügen.
<?php
echo 'Ein Text der ausgegeben wird<br/>';
echo 'Nun folgt ein anderer Text';
?>
Wie erwartet steht im Browser den folgenden Inhalt.
Ein Text der ausgegeben wird Nun folgt ein anderer Text
Wenn der Quellcode im Browser betrachtet wird stehen beide Strings weiterhin hintereinander.
Ein Text der ausgegeben wird<br/>Nun folgt ein anderer Text
3. Steuerzeichen in Strings
Wenn wir versuchen ein Apostroph innerhalb eines Strings zu schreiben erhalten wir ein Problem, da PHP das Ende des Strings fälschlicherweise zu früh erkennt.
<?php
echo 'Dummy Text ' mit Apostroph';
echo 'Ein weiterer Text';
?>
Auch an der Einfärbung erkennt man wie PHP den String nur bis zum 2. Apostroph
erkennt. Um nun das Zeichen '
in den String zu kriegen kann man z.B.
Double Quoted Strings verwenden. Das sind Strings die
statt den Apostroph die Anführungszeichen "
als Begrenzer benutzen.
<?php
echo "Dummy Text ' mit Apostroph";
echo "Ein weiterer Text";
?>
Eine andere Möglichkeit ist die eine Escape-Sequenz einzufügen.
In PHP-Strings ist \
das Escape-Zeichen, es wird verwendet wenn
man eine solche Escape-Sequenz haben möchte. In Single Quoted
Strings (Strings mit '
als Begrenzer) wird mit
\'
ein Apostroph erzeugt.
<?php
echo 'Dummy Text \' mit Apostroph';
echo 'Ein weiterer Text';
?>
Die gleiche Idee kann verwendet werden wenn man in double quoted Strings ein Anführungszeichen erzeugen will.
<?php
echo "Dummy Text \" mit Apostroph";
echo "Ein weiterer Text";
?>
Stellt sich nun die Frage wie man ein einzelnes \
erzeugt,
ohne dass es gleich als Start einer Escape-Sequenz interpretiert wird.
Die Lösung ist das Escapen des Escape-Zeichens.
<?php
echo "Double quoted mit \\ im Text";
echo 'Single quoted mit \\ im Text';
?>
Obwohl single quoted und double quoted Strings scheinbar die selbe Funktionalität besitzen sind in double quoted Strings mehr Escape-Sequenzen möglich. Die folgende Tabelle enthält eine Liste der zusätzlichen Escape-Sequencen in double quoted Strings.
Zeichen | Beschreibung |
---|---|
\n | Ein Zeilenumbruch |
\r | Ein Wagenrücklauf, oft verwendet bei Netzwerkprotokollen. |
\t | Ein Tabulator |
\v | Vertikaler Tabulator, eher selten verwendet |
\f | Seitenvorschub, noch seltener verwendet |
\$ | Ein Dollarzeichen. Ohne diese Sequenz wird versucht eine Variable zu finden und dessen Inhalt einzufügen. |
\0 bis \777 | Ein Zeichen aus dem Bereich von 0x000 bis 0x1FF |
\x0 bis \xFF | Ein Zeichen aus dem Bereich von 0x00 bis 0xFF |