quakenet:#php Tutorial

Author: Progman, zuletzt bearbeitet von progman @ 2003/07/09 14:25:30

Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.

Strings

  1. Unterschiedliche Strings
  2. Strings in doppelten Anführungszeichen
  3. Strings in einfachen Anführungszeichen

1. Unterschiedliche Strings

In PHP gibt es drei unterschiedliche Methoden Strings zu erstellen. Zwei davon kennen wir. Einmal sind das die Strings, die mit doppelten Anführungszeichen eingeleitet und beendet werden und dann die Strings, die mit einfachen Anführungszeichen eingeleitet werden, wie wir es bei den Arrayelementen zu tun haben. Die dritte Variante wird Heredoc genannt. Doch Heredoc ist eigentlich so wie Strings mit doppelten Anführungszeichen, mit ein paar Ausnahmen, die im Link erklärt sind.

Die beiden Stringdeklarationen, die wir kennen, arbeiten ein wenig anders in Hinsicht der Steuerzeichen und Variablen. Wie genau, wird im diesen Tutorial-Eintrag erklärt.

2. Strings in doppelten Anführungszeichen

Wenn wir einen String mit doppelten Anführungszeichen schreiben so wird jedes darin stehende Steuerzeichen, z.B. \n, umgewandelt. Es steht dann kein \n im Quelltext sondern ein Zeilenumbruch. Desweiteren werden darin stehende Variablen ausgewertet und in den String geschrieben.

<?php
    error_reporting
(E_ALL);

    
$variable = 5;
    echo
"In der Variable steht $variable drin";
?>

Dieser Programmcode blablabla...

In der Variable steht 5 drin
        

Variablen in doppelten Anführungszeichen werden durch ihre Inhalte ersetzt. Dieses Verfahren wird in PHP Stringparsen genannt, weil PHP den String durchgeht und dann entsprechend Variablen und Steuerzeichen durch ihre Inhalte und Aktionen ersetzt. Deswegen muss man, wenn man ein $ ausgeben will, auch mit \ escapen, damit es nicht fälschlicherweise als Variable interpretiert wird.

<?php
    error_reporting
(E_ALL);

    
$variable = 5;
    echo
"In der Variable steht $variable drin<br />\n";
    echo
"In der Variable steht \$variable drin<br />\n";
?>

Ausgabe:

In der Variable steht 5 drin
In der Variable steht $variable drin
        

Das parsen von Variablen in Strings kann aber auch ins Auge gehen. Z.B. wenn PHP nicht weiß welche Variable ersetzt werden soll.

<?php
    error_reporting
(E_ALL);

    
$bus = "440";

    echo
"Ich fahre mit dem $buser";
?>

Mit dem Code erhofft man sich, das dort dann folgendes steht.

Ich fahre mit dem 440er
        

Doch das wird nicht gehen. Denn PHP ersetzt nicht die Variable $bus, sondern versucht die Variable $buser zu ersetzen. Wenn es diese dann auch noch nicht gibt, wird eine Fehlermeldung ausgegeben, dass es die Variable $buser nicht gibt.

Deswegen, Variablen in Strings kann ich absolut nicht empfehlen. Es gibt nur Probleme und für PHP und dem Programmierer ist dann nicht klar, welche Variable nun ersetzt wird und welche nicht. Deswegen sollte man Variablen entweder mit dem Verkettungsoperator oder mit der Funktion sprintf an Strings anhängen.

3. Strings in einfachen Anführungszeichen

Der unterschied zu Strings in doppelten Anführungszeichen ist der, dass Strings in einfachen Anführungszeichen nicht geparsed werden. Das heißt, dass keine Variablen und Steuerzeichen umgewandelt werden. Wenn man jetzt nachdenkt, so müssten Strings in einfachen Anführungszeichen schneller abgearbeitet werden. Dies kann man aber nicht zeigen, da die Abarbeitung des Scripts sehr schnell verläuft und man den Unterschied nicht merkt. Alle Zeichen, die man in einfachen Anführungszeichen angibt, werden so wiedergegeben wie sie im String stehen. Außnahmen sind die Steuerzeichen \\ für ein normalen Backslash (ein einzelner \ reicht auch) und das Steuerzeichen \', um ein ' in einem String zu speichern.

<?php
    error_reporting
(E_ALL);

    echo
'Ein String mit $ und \' und \ und \\ als letzes<br />';
    echo
'Nun mit \n \r \t \v \a \b und anderen Steuerzeichen die es gibt';
?>

Ausgabe: ("Ausgabe:" ist kürzer zu schreiben. Mist jetzt hab ich ja diesen Text geschrieben und der ist ja länger als mein "Das erzeugt folgende Ausgabe". Ich Dummkopf...)

Ein String mit $ und ' und \ und \ als letzes
Nun mit \n \r \t \v \a \b und anderen Steuerzeichen die es gibt
        

Die einzelnen Zeichen werden so ausgegeben wie sie im String stehen, außer die grad erwähnten Ausnahmen. Wenn man z.B. viele Backslashes ausgeben möchte so eignet sich die Verwendung von einfachen Anführungszeichen. Denn dann braucht man nicht vor jedem Backslash noch ein zusätzlichen Backslash schreiben, wie man es bei Strings in doppelten Anführungszeichen machen müsste.

Für den Verkettungsoperator ist es egal welche Strings aneinander gehängt werden. Er kann ja schließlich auch Variablen und Strings miteinander verbinden.

<?php
    error_reporting
(E_ALL);

    echo
'Ein String' . "\n";
    
// Zeilenumbruch im Quelltext
?>

Fragen zum aktuellen Thema

  1. Welche Möglichkeiten gibt es Strings zu erstellen
Welche Möglichkeiten gibt es Strings zu erstellen

Es gibt 3 Möglichkeiten, Strings zu erstellen

  1. Wenn man Strings mit einfachen Anführungszeichen erstellt, werden alle Zeichen (außer ein paar Ausnahmen), so dargestellt wie sie im String stehen.

  2. Strings in doppelten Anführungszeichen werden von PHP geparsed. Dies heißt dass alle Variablen und Steuerzeichen umgewandelt werden.

  3. Die Heredoc-Schreibweise benutzt man um längeren Text auszugeben oder in einer Variable zu speichern. Sie Syntax von Heredoc findet man im PHP-Manual unter Strings / Heredoc.

Nach oben