|
|
 |
|
|
 |
 |
 |
 |
 |
Hits gesamt: 5203812 Hits Heute: 469 max. Hits (10.07.07): 6964 User Online: 23 Scripts: 2828 |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
|
 |
|
|
 |
|
|
 |
 |
 |
 |
 |
 ASP.NET Web Matrix Developer's Guide . |
|
|
 |
 |
 |
 |
 |
 |
|
 |
|
 |
 |
 |
 |
 |
Manuals > PHP >
Strings / Zeichenketten |
Strings / Zeichenketten
Ein String ist eine Folge von Zeichen. In PHP
entspricht ein Zeichen einem Byte, das heißt, dass exakt 256
unterschiedliche Zeichen möglich sind. Das impliziert auch, dass
PHP keine native Unterstützung für Unicode bietet. Siehe
utf8_encode() und
utf8_decode() für etwas Unicode-Unterstützung.
Anmerkung:
Für einen String stellt die Länge kein Problem dar. Von PHP-Seite
aus gibt es keine praktische Grenze für die Größe eines Strings.
Daher gibt es keinen Grund sich Sorgen über lange Strings zu
machen.
Syntax
Ein String kann auf drei verschiedene Weisen geschrieben werden.
Einfache Anführungszeichen (Single quoted)
Der leichteste Weg einen einfachen String zu schreiben, ist der
Einschluss in einfache Anführungszeichen (das Zeichen
').
Um ein einfaches Anführungszeichen wörtlich auszugeben, muss
dieses, wie in vielen anderen Programmiersprachen auch mit einem
Backslash (\) escaped werden. Wenn Sie
innerhalb eines Strings einen Backslash vor einem einfachen
Anführungszeichen oder am Ende eines Strings ausgeben wollen,
müssen Sie diesen verdoppeln. Beachten Sie: wenn Sie versuchen
irgendwelche anderen Zeichen zu escapen, wird der Backslash
ebenfalls ausgegeben! Daher besteht für gewöhnlich keine
Notwendigkeit den Backslash selbst zu escapen.
Anmerkung:
In PHP 3 wird eine Warnung der Stufe
E_NOTICE ausgegeben, wenn das passiert.
Anmerkung:
Anders als bei den zwei anderen Schreibweisen werden Variablen und
escape-Sequenzen für spezielle Zeichen innerhalb von
single-quoted Strings nicht ausgewertet.
Doppelte Anführungszeichen (Double quoted)
Wenn ein String in doppelten Anführungszeichen (")
eingeschlossen ist, versteht PHP mehr Escape-Folgen für
spezielle Zeichen:
Tabelle 6-1. Nicht ausgewertete / übergangene Zeichen: | Zeichenfolge | Bedeutung |
|---|
| \n | Zeilenvorschub (LF oder 0x0A als ASCII-Code) | | \r | Wagenrücklauf (CR oder 0x0D als ASCII-Code) | | \t |
horizontaler Tabulator (HT oder 0x09 als ASCII-Code)
| | \ | Backslash / Rückstrich | | $ | Dollar-Symbol | | \" | doppelte Anführungszeichen | | \[0-7] |
die Zeichenfolge, die dem regulären Ausdruck entspricht ist
ein Zeichen in Oktal-Schreibweise
| | \x[0-9A-Fa-f] |
die Zeichenfolge, die dem regulären Ausdruck entspricht ist
ein Zeichen in Hexadezimal-Schreibweise
|
Noch einmal: wenn Sie versuchen, irgend ein anderes Zeichen zu
escapen wird der Backslash ebenfalls ausgegeben!
Das wichtigste Merkmal von double-quoted Strings ist die
Tatsache, dass Variablennamen ausgewertet werden. Für Details
siehe String
Analyse (parsing)
Heredoc
Eine andere Möglichkeit Strings einzufassen, besteht im Gebrauch
der heredoc-Syntax ("<<<"). Hierfür ist nach
<<< ein Bezeichner zu setzen. Nun
folgt der eigentliche String und dann derselbe Bezeichner um den
String abzuschließen.
Der schließende Bezeichner muss in der
ersten Spalte der Zeile stehen. Die verwendeten Bezeichner
müssen den gleichen Regeln entsprechen wie alle anderen
PHP-Labels auch: Sie dürfen lediglich alphanumerische Zeichen
und den Unterstrich enthalten und müssen mit einem Unterstrich
oder einem Buchstaben beginnen.
| Warnung |
Es ist sehr wichtig zu beachten, dass die Zeile mit dem
schließenden Bezeichner keine anderen Zeichen enthält,
ausgenommen möglicherweise ein Semikolon
(;). Das bedeuted im Besonderen, dass der
Bezeichner nicht eingerückt werden darf
und es dürfen keine Leerzeichen oder Tabulatoren vor oder nach
dem Semikolon stehen. Außerdem ist es wichtig, zu beachten,
dass das erste Zeichen vor dem schließenden Bezeichner ein der
Definition Ihres Betriebssystems entsprechender Zeilenvorschub,
sein muss. Das ist zum Beispiel auf einem Macintosh ein
\r.
Falls diese Regel gebrochen wird und der schließende Bezeichner
nicht "sauber" ist, wird er nicht als schließender Bezeichner
betrachtet und PHP wird weiter danach suchen. Wird in diesem
Fall kein korrekter schließender Bezeichner gefunden, gibt es
einen Parser-Fehler mit der Zeilennummer vom Ende des Skripts.
|
Heredoc-Text funktioniert wie ein String innnerhalb doppelter
Anführungszeichen, nur ohne doppelte Anführungszeichen.
Anführungszeichen innerhalb von heredoc-Texten müssen also
keiner Sonderbehandlung (escapen) unterzogen werden, aber Sie
können dennoch die oben aufgeführten Escape-Anweisungen
verwenden. Variablen werden ausgewertet, aber besondere
Aufmerksamkeit muss komplexen Variablen gewidmet werden, genau
wie bei Strings.
Beispiel 6-2.
Beispiel zur String-Festlegung per "heredoc"-Methode:
<?php $str = <<<EOD Beispiel eines Strings über mehrere Script-Zeilen durch Gebrauch der heredoc-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 heredoc Unterstützung wurde in PHP 4 eingeführt.
Variablen-Analyse (parsing)
Wird ein String in doppelten Anführungszeichen oder mit heredoc
angegeben, werden enthaltene Variablen ausgewertet
(geparst).
Es gibt zwei Syntax-Typen: eine einfache
und eine komplexe.
Die einfache Syntax ist die geläufigste und bequemste. Sie
bietet die Möglichkeit eine Variable, einen
Array-Wert oder eine
Objekt-Eigenschaft auszuwerten (parsen).
Die komplexe Syntax wurde in PHP 4 eingeführt und ist an den
geschweiften Klammern {}erkennbar, die den
Ausdruck umschließen.
Einfache Syntax
Sobald ein Dollarzeichen ($) auftaucht, wird
der Parser versuchen, gierig so viele Zeichen wie möglich zu
bekommen, um einen gültigen Variablennamen zu bilden.
Schließen Sie Ihren Varaiblennamen in geschweifte Klammern ein,
wenn Sie ausdrücklich das Ende des Namens angeben wollen.
Auf ähnliche Weise können Sie erreichen, dass ein
Array-Index oder eine
Objekt-Eigenschaft ausgewertet wird. Bei
Array-Indizes markiert die schließende eckige Klammer
(]) das Ende des Index. Für
Objekt-Eigenschaften gelten die gleichen Regeln wie bei
einfachen Variablen, obwohl es bei Objekt-Eigenschaften keinen
Trick gibt, wie dies bei Variablen der Fall ist.
Für irgendetwas Komplexeres sollten Sie die komplexe Syntax
nutzen.
Komplexe (geschweifte) Syntax
Diese wird nicht komplex genannt, weil etwa die Syntax komplex
ist, sondern weil Sie auf diesem Weg komplexe Ausdrücke
einbeziehen können.
Tatsächlich können Sie jeden beliebigen Wert einbeziehen, der
im Namensbereich in Strings gültig ist. Schreiben Sie den
Ausdruck einfach auf die gleiche Art und Weise, wie außerhalb
des Strings, und umschließen diesen mit { und }. Da Sie '{'
nicht escapen können, wird diese Syntax nur erkannt, wenn auf {
unmittelbar $ folgt. (Benutzen Sie "{$" oder "\{$" um ein
wörtliches "{$" zu erhalten.) Einige Beispiele, um dies zu
verdeutlichen:
Zugriff und Modifikation von Zeichen in Strings
Innerhalb von Zeichenketten (strings) kann durch die Angabe des
nullbasierten Offsets in geschweiften Klammern nach dem String auf das
gewünschte Zeichen zugegriffen oder dieses modifiziert werden.
Anmerkung:
Für Abwärtskompatibilität können Sie für den selben Zweck immer
noch die Array-Klammern verwenden. Diese Syntax wird jedoch
seit PHP 4 missbilligt.
Beispiel 6-3. Einige String-Beispiele
<?php // Das erste Zeichen eines Strings. $str = 'Das ist ein Test.' $erstes = $str{0}; // $erstes enthält "D"
// Das dritte Zeichen eines Strings. $drittes = $str{2};
// Das letzte Zeichen eines Strings. $str = 'Das ist immer noch ein Test.' $letztes = $str{strlen($str)-1}; // $letztes enthält "."
// Das letzte Zeichen eines Strings verändern $str = 'Schau auf die Straßi'; $str{strlen($str)-1} = 'e';
?>
|
|
Nützliche Funktionen und Operatoren
Strings können mittels des '.'(dot)-Operators miteinander
verbunden werden. Beachten Sie, dass dafür nicht der '+'
(Additions)-Operator verwendet werden kann. Für mehr
Informationen schauen Sie bitte unter den Zeichenketten-Operatoren
nach.
Es gibt eine Menge nützlicher Funktionen zur String-Manipulation.
Für allgemeine Funktionen schauen Sie sich den Abschnitt über
String Funktionen an, und für
fortgeschrittenes Suchen & Ersetzen die Funktionen zu
Regulären Ausdrücken (in zwei Ausführungen: Perl Kompatibel und POSIX erweitert).
Weiterhin gibt es auch noch Funktionen
für URL-Strings, und Funktionen zum
Verschlüsseln/Entschlüsseln von Strings (mcrypt und mhash).
Schließlich, falls Sie immer noch nicht das gefunden haben wonach
Sie suchen, schauen Sie unter den Zeichen-Typen Funktionen nach.
Umwandlung nach string
Sie können einen Wert mit der
(string)-Umwandlung oder mit der Funktion
strval() in einen String umwandeln. Die
Umwandlung in einen String wird im dem Bereich eines Ausdrucks,
in dem ein String benötigt wird, automatisch für Sie vorgenommen.
Dies geschieht, wenn Sie die Funktionen echo()
oder print() benutzen oder wenn Sie den Wert
einer Variablen mit einem String vergleichen. Die Abschnitte über
Typen und Typen-Tricks
verdeutlichen das folgende. Siehe auch
settype().
Ein Boolean TRUE-Wert wird in den String
"1" umgewandelt, der FALSE-Wert wird als
"" (leerer String) dargestellt. Dadurch können
Sie Boolean- und String-Werte ineinander umwandeln.
Ein Integer oder eine Fließkommazahl
(Float) wird in einen String umgewandelt, der die
Zahl durch seine Ziffern darstellt (bei Fließkommazahlen
inklusive Exponententeil).
Arrays werden immer in den String "Array"
umgewandelt. Sie können also den Inhalt eines Arrays
nicht mit echo() oder
print() ausgeben, um zu sehen, was es enthält.
Um ein Element anzuschauen, benötigen Sie etwas in der Art
echo $arr['foo']. Siehe weiter unten für
Hinweise zur Ausgabe/Ansicht des kompletten Inhalts.
Objekte werden immer in den String "Object"
umgewandelt. Wenn Sie für die Fehlersuche die Werte der
Mitgliedsvariablen eines Objekts ausgeben möchten,
lesen Sie bitte die Abschnitte weiter unten. Benutzen Sie
get_class(), wenn Sie den Namen der Klasse
erfahren möchten, von der ein Objekt eine Instanz ist.
Ressourcen werden immer in Strings mit der Struktur
"Resource id #1" umgewandelt, wobei
1 die eindeutige Nummer ist, die der
Resource von PHP zur Laufzeit zugeordnet wurde.
Benutzen Sie get_resource_type(), wenn Sie
wissen möchten, welchen Typs die Ressource ist.
NULL wird immer in einen leeren String umgewandelt.
Wie Sie oben erfahren haben, liefert Ihnen die Ausgabe von
Arrays, Objekten oder Ressourcen keine brauchbaren Informationen
über die Werte selbst. Schauen Sie sich für eine bessere
Möglichkeit, sich Werte für die Fehlersuche ausgeben zu lassen,
die Funktionen print_r() und
var_dump() an.
Sie können PHP-Werte auch in Strings umwandeln, um sie dauerhaft
zu speichern. Diese Methode wird als Serialisierung bezeichnet
und kann mit der Funktion serialize()
vorgenommen werden. Falls Ihr PHP über WDDX-Unterstützung verfügt, können Sie
PHP-Werte auch in XML-Strukturen serialisieren.
Umwandlung von Strings in Zahlen
Sobald ein String als numerischer Wert ausgewertet wird, werden
der resultierende Wert und der Typ wie folgt festgelegt.
Der String wird als float ausgewertet, wenn er eines
der Zeichen '.', 'e' oder 'E' enthält. Ansonsten wird er als
Integer-Wert interpretiert.
Der Wert wird durch den Anfangsteil des Strings bestimmt. Sofern
der String mit gültigen numerischen Daten beginnt, werden diese
als Wert benutzt. Andernfalls wird der Wert 0 (Null) sein.
Gültige numerische Daten sind ein optionales Vorzeichen, gefolgt
von einer oder mehreren Zahlen (optional mit einem Dezimalpunkt).
Wahlweise kann auch ein Exponent angegeben werden. Der Exponent
besteht aus einem 'e' oder 'E', gefolgt von einer oder mehreren
Zahlen.
Weitere Informationen über solche Umwandlungen finden Sie in den
UNIX Manualseiten unter strtod(3).
Wenn Sie irgendein Beispiel dieses Abschnitts testen wollen,
können Sie dieses per "Copy und Paste" übernehmen. Fügen Sie die
folgende Zeile Ihrem Skript hinzu und Sie sehen selbst was
passiert:
Erwarten Sie nicht, den Code eines Zeichens zu bekommen, indem
Sie es in einen Integer umwandeln (wie das z.B. in C der Fall
wäre). Benutzen Sie die Funktionen ord() und
chr(), um Zeichencodes und Zeichen ineinander
umzuwandeln.
|
|
|
 |
 |
 |
 |
 |
 |
|
 |