Zeichenketten
Zeichenketten sind eine Aneinanderreihung von Zeichen. Bei einem Zeichen kann es sich um einen Buchstaben, eine Zahl oder
ein anderes Zeichen handeln. Eine Zeichenkette (engl. string) ist vom Datentyp String
und kann kein, ein
oder mehrere Zeichen enthalten. Notiert werden Zeichenketten innerhalb von einfachen ''
oder doppelten ""
Anführungszeichen. Für gewöhnlich sollten Sie Zeichenketten in einfachen Anführungszeichen notieren. In doppelten Anführungszeichen
ist die Angabe von Escape-Sequenzen (wie z. B. \r
, \n
oder \t
) und Variablen möglich.
Vereinfacht kann man sagen, dass Werte in doppelten Anführungszeichen geparst werden, d. h. diese werden interpretiert und
verarbeitet. Anders ist dies bei einfachen Anführungszeichen. Zeichenketten in diesen stellen lediglich eine einfache Kette
von Zeichen dar. Zur Verkettung oder einfacher gesagt zur Verbindung von zwei oder mehreren Zeichenketten wird der
Punkt-Operator .
verwendet. Dies ist sowohl mit Zeichenketten in einfachen als auch mit Zeichenketten in doppelten
Anführungszeichen möglich. Des Weiteren ist auch die Verbindung einer Zeichenkette, welche in einfachen Anführungszeichen notiert
wurde, mit einer Zeichenkette, welche in doppelten Anführungszeichen notiert wurde, möglich. Einige Zeichen müssen in PHP-Strings
maskiert (engl. escape) werden. Dies gilt für das Zeichen '
, welches zu \'
wird, und für "
,
welches zu \"
wird. Natürlich ist \'
nur bei Zeichenketten, welche in einfachen Anführungszeichen notiert
wurden, notwendig und das Gleiche für \"
bei Zeichenketten in doppelten Anführungszeichen. Zudem muss der Backslash
\
mit \\
maskiert werden.
<?php $name = 'Peter'; echo 'Hallo '.$name.', wie geht es dir?'; ?>
Übrigens: Festwerte, dabei kann es sich um eine Zeichenkette oder auch um eine Zahl handeln, welche „direkt“ angegeben wurden, werden auch als Literale bezeichnet.
Übrigens: Möchten Sie an eine Variable einen Wert anhängen, so können Sie den Operator .=
verwenden (z. B.
$meinName = 'Max';
und anschließend $meinName .= ' Meyer';
).
Länge ermitteln
Um die Länge einer Zeichenkette zu ermitteln, benötigen wir die Funktion strlen()
. Dieser wird als Parameter die
Zeichenkette übergeben. Als Rückgabe erhalten wir einen Zahlenwert, welcher die Länge der Zeichenkette repräsentiert.
<?php echo strlen('Hallo Welt!'); ?>
Suche in einer Zeichenkette
Um eine Zeichenkette innerhalb einer Zeichenkette zu suchen, gibt es die Funktionen strpos()
, stripos()
,
strrpos()
und strripos()
. Alle Funktionen haben das gleiche Schema: Der erste Parameter gibt den sogenannten
haystack an, bei welchem es sich um die Zeichenkette handelt, in welcher gesucht werden soll. Der zweite Parameter stellt
das sogenannte needle dar, wobei es um die Zeichenkette handelt, welche innerhalb des haystacks gesucht werden soll.
Als dritter und optionaler Parameter kann ein nullbasierter Offset für die Suche angegeben werden. Im Gegensatz zu strpos()
führt stripos()
die Suche ohne Beachtung der Groß- und Kleinschreibung durch. Der Unterschied zwischen
strpos()
und strrpos()
und stripos()
und strripos()
ist, dass bei strrpos()
und strripos()
die Suche vom Ende bis zum Anfang durchgeführt wurde. Vereinfacht gesagt ist es mit diesen zwei
Funktionen möglich, das letzte Vorkommen in einer Zeichenkette zu finden. Alle vier Funktionen geben als Rückgabe die Zeichenposition
zurück. Dabei entspricht das erste Zeichen der Position 0, das zweite Zeichen der Position 1 usw.. Wird die Zeichenkette nicht gefunden,
so gibt die Funktion false
zurück.
<?php echo strpos('Diese Zeichenkette enthält ZEICHEN und dient zur Suche.', 'ZEICHEN'); echo '<br />'; echo stripos('Diese Zeichenkette enthält ZEICHEN und dient zur Suche.', 'ZEICHEN'); ?>
Wichtig: Wird der Wert false
mit echo
ausgegeben (z. B. über eine der Suchfunktionen), so werden
Sie bei der Ausgabe nichts sehen. Dies kommt daher, dass Werte vom Typ boolean
nicht zur Ausgabe gedacht sind. Solche
Werte werden wir später bei Bedingungen und Schleifen benutzen.
Teilzeichenkette extrahieren
Um aus einer Zeichenkette einen Teil (eine sogenannte Teilzeichenkette) zu extrahieren, gibt es die Funktion substr()
. Als
Parameter wird der Funktion die Zeichenkette, die Startposition (ebenfalls nullbasierend) und optional die Länge der Teilzeichenkette
übergeben.
<?php echo substr('Diese Zeichenkette enthält ZEICHEN und dient zur Suche.', 6, 29); ?>
Umwandlung
Die Funktion strtolower()
wandelt alle in der Zeichenkette enthaltene Buchstaben in Kleinbuchstaben um. Mit Hilfe
der Funktion strtoupper()
ist es hingegen möglich, alle Buchstaben in Großbuchstaben umzuwandeln. Die Funktion
trim()
entfernt sogenannte white spaces am Anfang und am Ende der Zeichenkette. Standardmäßig werden folgende
Zeichen entfernt: (Leer) (Leerzeichen, ASCII 0x20), \t
(Tabulator, ASCII 0x09), \x0B
(vertikaler Tabulator,
0x0B), \r
(Wagenrücklauf, ASCII 0x0D), \n
(Zeilenvorschub, ASCII 0x0A) und \0
(NULL-Byte, 0x00).
Als zweiter Parameter kann eine Zeichenkette übergeben werden, welche die Maske der zu entfernenden Zeichen enthält. Dadurch ist es auch
möglich, mit Hilfe dieser Funktion andere Zeichen am Anfang und Ende zu entfernen.
<?php echo strtolower('Diese Zeichenkette enthält ZEICHEN und dient zur Suche.'); echo '<br />'; echo strtoupper('Diese Zeichenkette enthält ZEICHEN und dient zur Suche.'); echo '<br /><br />'; echo '<pre>'; echo ' Dies ist eine Zeichenkette zum Test, welche einige Leerzeichen enthält. '; echo "\r\n"; echo trim(' Dies ist eine Zeichenkette zum Test, welche einige Leerzeichen enthält. '); echo '</pre>'; ?>
Suchen und Ersetzen
Die Funktion str_replace()
ersetzt alle Vorkommen einer Zeichenkette in einer Zeichenkette. Vereinfacht gesagt, handelt
es sich um eine Suchen- und Ersetzen-Funktion, die Sie vielleicht von Textverarbeitungsprogrammen und Editoren kennen. Der Funktion
werden drei Parameter übergeben: search (Zeichenkette, welche gesucht werden soll), replace (Zeichenkette, welche
ersetzt werden soll) und subject (Zeichenkette, in welcher search durch replace entfernt werden soll).
str_replace()
ändert nicht den String
, welcher im Parameter subject übergeben wurde, sondern gibt
eine neue Zeichenkette zurück. Um das Suchen unabhängig von der Groß- und Kleinschreibung durchzuführen, können wir an Stelle der
Funktion str_replace()
die Funktion str_ireplace()
verwenden. Für das Suchen und Ersetzen mit Hilfe von
regulären Ausdrücken können wir die Funktion preg_replace()
verwenden. Auf die Verwendung von regulären Ausdrücken
gehen wir aber an diesem Punkt nicht weiter ein.
<?php echo str_replace('ZEICHEN', 'Buchstaben', 'Diese Zeichenkette enthält ZEICHEN und dient zur Suche.'); echo '<br />'; echo str_ireplace('ZEICHEN', 'Buchstaben', 'Diese Zeichenkette enthält ZEICHEN und dient zur Suche.'); ?>