In dem Abschnitt Vergleichsoperatoren wurden Funktionen zum Vergleich von zwei Strings behandelt. Weiter wurde in dem Abschnitt String-Verkettungsoperator der Verkettungsoperator für Zeichenketten vorgestellt. Die Verarbeitung und Erstellung von Zeichenketten soll in diesem Abschnitt nun weiter beleuchtet werden.
Zeichenketten werden bei der Variablendeklaration in PHP in entweder einfachen Hochkommata ('
) oder doppelten Hochkommata ("
) eingeschlossen. Dabei darf in beiden Fällen die Stringdefinition über mehrere Zeilen geführt werden:
1 2 3 4 5 6 7 8 |
<?php $meineErsteZeichenkette = 'Erste Zeile Zweite Zeile Dritte Zeile'; $meineZweiteZeichenkette = "Erste Zeile Zweite Zeile Dritte Zeile"; ?> |
Der Unterschied zwischen den beiden Verfahren ist, dass bei der Benutzung von doppelten Anführungszeichen ("
) der String geparst wird. Innerhalb des Strings ist es nun erlaubt, Steuerungskommandos unterzubringen. Die wichtigsten davon sind die folgenden:
\n
: Erzeugt einen Zeilenumbruch\t
: Tabulator\"
: Das escapte doppelte Anführungszeichen
Was jedoch jedoch wichtiger ist, ist, dass auch Variablen innerhalb der Syntax mit doppelten Anführungszeichen aufgelöst werden. Dabei existiert eine simple und eine komplexe Möglichkeit der Angabe von Variablen. In der simplen Variante, wird einfach der Variablenname in den String geschrieben. PHP sorgt dann dafür, dass der Inhalt dieser Variable in den String eingefügt wird. Dies ist auch für Arrays oder den Zugriff auf Funktionen von Objekten möglich:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $name = 'Peter'; $begruessung = "Hallo $name"; echo ($begruessung); // Zugriff auf das Array $arr = array('Klaus', 'Peter'); $begruessungArr = "Hallo $arr[1]"; echo ($begruessungArr); // Zugriff auf die Klasse class Person { public $name = 'Peter'; } $person = new Person(); $begruessungPerson = "Hallo $person->name"; echo $begruessungPerson; ?> |
Dreimal wird Hallo Peter
ausgegeben.
Die komplexe Variante eignet sich besonders für den Fall, dass nach der Variable kein Trennzeichen ausgeben werden soll, sondern direkt mit einem alphanumerischen Zeichen fortgeführt wird:
1 2 3 4 5 |
<?php $name = 'Peter'; $bezeichnung = "${name}s Stift"; echo ($bezeichnung); ?> |
Innerhalb der simplen und komplexen Möglichkeit der Angabe von Variablen lässt sich auch ein Funktionsaufruf entweder auf eine normale Funktion oder auf die Funktion eines Objektes durchführen. Wichtig hierbei ist es zu beachten, dass nicht der Rückgabewert dieser Funktion innerhalb des Strings eingeführt wird, sondern der Rückgabewert der Funktion als Variablenname genutzt wird, der nochmals aufgelöst wird.
Alternativ kann für die Definition der Zeichenkette mit einem einfachen Hochkommata ('
) auch die NOWDOC-Syntax verwendet werden, für die Definition mit doppelten Hochkommata ("
) die HEREDOC-Syntax. Auch in der HEREDOC-Syntax erfolgt ein parsen des Strings, durch welches Variableninhalte eingefügt werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // NOWDOC $meineErsteZeichenkette = <<<'ERSTEDEFINITION' Erste Zeile Zweite Zeile Dritte Zeile ERSTEDEFINITION; // HEREDOC $meineZweiteZeichenkette = <<<ZWEITEDEFINITION Erste Zeile Zweite Zeile Dritte Zeile ZWEITEDEFINITION; ?> |
Mit der Funktion strlen()
wird die Länge eines Strings ermittelt. Ihr einziger Übergabeparameter ist der String selbst. Weiter lässt sich mit der Funktion str_word_count()
die Anzahl der Wörter in einer Zeichenkette ermitteln. Den ersten Parameter stellt wiederum der String dar. Möchte man gerne die ein Array mit den gefundenen Wörtern erhalten, so kann man die Funktion mit dem zweiten Parameter 1
aufrufen.
Die Funktion explode()
tut Ähnliches: Sie trennt einen String, der als erster Parameter übergeben wird, anhand eines Trennzeichens, welches als zweiter Parameter angegeben ist, in ein Array auf. Die Funktion implode()
arbeitet gegensätzlich. Mit dem Trennzeichen, welches als erster Parameter übergeben wird, wird ein Array, welches als zweiter Parameter übergeben wird, zu einem einzigen String.
Mit der Funktion substr()
lässt sich ein Teilstring eines Strings erzeugen. Der String wird selbst als erster Parameter angegeben. Dann folgt der Startpunkt von dem an der Substring laufen soll. Als letzter Parameter wird die Länge des Substrings angegeben.
Mit der Funktion strpos()
lässt sich innerhalb des als ersten Parameter angegeben Strings ein Teilstring finden, der als zweiter Parameter angegeben wird. Ab welcher Stelle gesucht werden soll, kann als letzter Parameter übergeben werden.
Wie man zwei Strings auf Gleichheit prüft, wurde schon in Abschnitt Vergleichsoperatoren besprochen. Manchmal möchte man jedoch auch Ähnlichkeiten zwischen zwei Strings feststellen. Die Funktion similar_text()
ermöglicht es, zu zählen, wie viele Zeichen von zwei Strings gleich sind. Die Funktion levenshtein()
ermittelt die Levenshtein-Distanz zwischen zwei Zeichenketten. Das ist die minimale Anzahl an den Aktionen Ersetzen, Einfügen und Löschen, um beide Zeichenketten ineinander zu überführen. Mit Hilfe der Funktion soundex()
kann der Soundex-Wert eines Strings, ein phonetischer Wert, berechnet werden. Die Funktion metaphone()
hingegen gibt den Methaphone-Schlüssel eines Strings als phonetischen Wert zurück. Phonetische Funktionen geben ähnliche Werte zurück, wenn beide Strings ähnlich ausgesprochen werden. Hier ist jedoch mit Vorsicht zu walten, da sich die Funktionen in PHP auf die englische Sprache beschränken.
Mit Hilfe der Funktion printf()
lässt sich ein formatierter String ausgeben. Die Funktion sprintf()
hingegen gibt den formatierten String als Variable zurück. Die Funktion fprintf()
schreibt ihn in eine Datei. Bei diesen Funktionen wird in der Parameterliste zunächst der String übergeben und dann eine Liste an Variablen, die in den String eingefügt werden sollen. Nur bei fprintf()
wird vor den auszugebenden String noch das Dateihandle in der Parameterliste übergeben.
Innerhalb des zu druckenden Strings sind folgende Platzhalter erlaubt, die dann durch die Funktion ersetzt werden:
%b
: Binäre Zahl%d
und%nd
: Dezimale Zahl, wobein
die Anzahl der Ziffern darstellt.%f
und%.nf
: Fließkommazahl, wobein
die Anzahl der Nachkommastellen angibt.%o
: Oktale Schreibweise%e
: Wissenschaftliche E-Notation%s
: Ein String wird in einen String eingefügt.
Zusätzlich existiert die Funktion vprintf()
, die analog zu printf()
genutzt werden kann, nur keine Parameterliste, sondern ein Array an einzufügenden Variablen übergeben bekommt. Ähnlich ist es bei der Funktion vsprintf()
als Pendant zu sprintf()
, die den String zurückgibt und die auch ein Array mit den einzufügenden Variablen übergeben bekommt.