Strings / Zeichenketten

Strings können durch eines der zwei folgenden Sets von Begrenzungszeichen zugewiesen werden:

Wenn der String eingeschlossen wird von doppelten Anführungszeichen ("), werden die Variablen innerhalb der Zeichenkette ausgewertet (begrenzt durch einige Einschränkungen beim "Parsen" (Ausführen) des PHP- Scripts). Wie in C und Perl kann das Backslash-Zeichen ("\") zur An- / Ausgabe spezieller Zeichen benutzt werden:

Tabelle 6-1. Nicht ausgewertete / übergangene Zeichen:

ZeichenfolgeBedeutung
\nneue Zeile (LF oder 0x0A als ASCII-Code)
\rWagenrücklauf (CR oder 0x0D als ASCII-Code)
\thorizontaler Tabulator (HT oder 0x09 als ASCII-Code
\\Backslash / Rückstrich
\$Dollar-Symbol
\"doppelte Anführungszeichen
\[0-7]{1,3} die Zeichenfolge, die dem regulären Ausdruck entspricht, ist in Oktal-Schreibweise
\x[0-9A-Fa-f]{1,2} die Zeichenfolge, die dem regulären Ausdruck entspricht ist, in Hexadezimal-Schreibweise

Sie können ein beliebiges anderes Zeichen übergehen bzw. von der Auswertung ausschliessen; in der höchsten Warn-Stufe wird aber eine Warnmeldung ausgegeben.

Die zweite Möglichkeit eine(n) Zeichenkette / String zu begrenzen, ist der Gebrauch des einfachen Anführungszeichens ("'"), auch Single-Quote genannt. Hier werden einzig die "\\" und "\'"-Zeichenfolgen von der Auswertung ausgeschlossen. Dies dient der Erleichterung, so dass sie Single-Quotes und Backslashes in einem durch einfache Anführungszeichen begrenzten String benutzen können. Variablen innerhalb von durch Single-Quotes begrenzten Strings werden nicht ausgewertet.

Eine andere Möglichkeit Strings einzufassen, besteht im Gebrauch der "here doc"-Syntax ("<<<"). Hierfür ist nach <<< ein Merker zu setzen. Nun folgt der eigentliche String und dann der selbe Merker um den String abzuschliessen. Der schliessende Merker muss in der ersten Spalte der Zeile stehen. Die verwendeten Bezeichner müssen den gleichen Regeln entsprechen wie alle anderen PHP-Bezeichner auch. Sie dürfen lediglich aus alphanumerischen Zeichen oder dem Unterstrich bestehen.

"Here doc"-Text funktioniert wie ein Text innnerhalb von '"', aber ohne '"'. Anführungszeichen innerhalb von "here doc"-Texten müssen also keiner Sonderbehandlung (escapen) unterzogen werden. Sie können aber die obigen Escape-Anweisungen verwenden. Variablen werden ausgewertet, aber besondere Aufmerksamkeit muss komplexen Variablen gewidmet werden, genau wie Strings.

Beispiel 6-1. Beispiel zur String-Festlegung per "here doc"-Methode:


<?php
$str = <<<EOD
Beispiel eines Strings
über mehrere Script-Zeilen
durch Gebrauch der here doc-Syntax.
EOD;

/* komplexeres Beispiel, mit Variablen */
class foo {
    var $foo;
    var $bar;

    function foo() {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'Mein Name';

echo <<<EOT
Mein Name ist "$name". Ich schreibe einige $foo->foo.
Nun schreibe ich gerade einige {$foo->bar[1]}.
Dies sollte ein großes 'A' schreiben: \x41
EOT;
?>
     

Anmerkung: Die "here-doc"-Unterstützung wurde in PHP 4 eingeführt.

Zeichenketten / Strings können mittels des '.'-Operators miteinander verbunden werden. Beachten sie, dass hier der '+' (Additions)-Operator nicht funktioniert. Bitte beachten sie auch String-Operatoren für weitergehende Informationen. Zeichen in einem String können wie ein numerisch-indiziertes Array von Zeichen benutzt werden. Die Syntax ist der von C ähnlich. Sehen sie hierzu die folgenden Beispiele:

Beispiel 6-2. Einige String-Beispiele


<?php
/* Zuweisung eines Strings. */
$str = "Dies ist eine Zeichenkette";

/* Erweiterung dieses Strings. */
$str = $str . " mit etwas zusätzlichem Text";

/* andere Möglichkeit zum Erweitern incl. Anweisung für Neue-Zeile. */
$str .= " und einer neuen Zeile am Ende.\n";

/* Dieser String wird am Ende zu: '<p>Nummer: 9</p>' */
$num = 9;
$str = "<p>Nummer: $num</p>";

/* Dieser wird zu '<p>Nummer: $num</p>' */
$num = 9;
$str = '<p>Nummer: $num</p>';
?>	  

/* Das erste Zeichen eines Strings */
$str = 'Das ist ein Test.'
$first = $str[0];

/* Das letzte Zeichen eines Strings */
$str = 'Das ist immer noch ein Test.'
$last = $str[strlen($str)-1];
?>
     

Umwandlung von Zeichenketten / Strings

Sobald ein String als Zahlenwert angesehen wird, wird der resultierende Wert und Typ wie folgt festgelegt:

Der String wird als double angesehen, wenn er eines der Zeichen '.', 'e', oder 'E' enthält. Ansonsten wird er als Integer-Wert interpretiert.

Der Inhalt wird durch den Anfangsteil des Strings vorgegeben. Sofern der String mit numerischen Daten beginnt, wird ein Zahlen-Wert angenommen. Andererseits kann der Wert auch 0 (NULL) sein. Gültig sind auch Werte mit einem optionalen Vorzeichen, gefolgt von einer oder mehreren Zahlen (optional mit einem Dezimalpunkt). Wahlweise kann auch ein Exponent angegeben werden. Dieser besteht aus einem 'e' oder 'E', gefolgt von einer oder meheren Zahlen.

Sobald der erste Ausdruck ein String ist, hängt der Typ der Variablen vom zweiten Ausdruck ab.


$foo = 1 + "10.5";              // $foo ist double (11.5)
$foo = 1 + "-1.3e3";            // $foo ist double (-1299)
$foo = 1 + "bob-1.3e3";         // $foo ist ein Integer-Wert (1)
$foo = 1 + "bob3";              // $foo ist ein Integer-Wert (1)
$foo = 1 + "10 Small Pigs";     // $foo ist ein Integer-Wert (11)
$foo = 1 + "10 Little Piggies"; // $foo ist ein Integer-Wert (11)
$foo = "10.0 pigs " + 1;        // $foo ist ein Integer-Wert (11)
$foo = "10.0 pigs " + 1.0;      // $foo ist double (11)     
     

Mehr Informationen über solche Umwandlungen können sie im UNIX-Manual unter strtod(3) finden.

Wenn sie alle Beispiele dieses Abschnitts testen wollen, können sie sie per Cut und Paste in ihr Script übertragen und mit der folgenden Zeile selbst sehen, was passiert:


echo "\$foo==$foo; Typ ist " . gettype( $foo ) . "<br>\n";