Strings
Strings gehören zu den wichtigsten Datentypen in der Programmierung.
Kein Wunder, das es so viele Funktionen gibt, mit denen wir die Strings bearbeiten und manipulieren können.
Verbinden
Wir waren bereits erfolgreich bei der "Konkatenation", so nennt man das Verbinden von Strings in der Programmierung. Das war das mit dem Punkt-Operator. Um noch mal zu verdeutlichen, wie der exklusiv für die String-Operationen zur Verfügung stehende Punkt-Operator arbeitet, betrachten wir das Zusammensetzen von Zahlen mit dem Punkt-Operator.
$a = 10;
$b = 20;
echo $a . $b;
Hier erkennt man gut, dass der Interpreter aus den beiden Integer einen String macht.
Teilen und Zusammenfügen
Oft werden Strings in Ihre Bestandteile zerlegt und an anderer Stelle wieder zusammengesetzt. Dazu betrachten wir die folgenden Möglichkeiten.
Die Länge des Strings ermitteln
Um die Länge eines Strings zu ermitteln, verwenden wir die Methode "strlen
", die uns eine Ganzzahl der Zeichen zurückliefert.
$a = "Aller Anfang ist schwer";
echo strlen($a);
Auf Zeichen zugreifen
Wir können auf die einzelnen Buchstaben eines Strings zugreifen, indem wir die eckigen Klammern verwenden. Wir greifen dann auf den Index zu. Der Index beschreibt die wievielte Stelle es ist. Achtung, es wird in der Programmierung bei 0 angefangen zu zählen.
$a = "Ausgabetext";
echo $a[2];
Daraus ergibt sich "A" = Index 0, "u" = Index 1 und "s" ist dann Index 2.
Index: 0 1 2 3 4 5 6 7 8 9 10 Wort: A u s g a b e t e x t
Auf diese Weise können wir durch die Angabe von negativen Werten den String von hinten auslesen. -1 steht dann für den letzten Buchstaben des Strings.
$a = "Ausgabetext";
echo $a[-1];
Gleichmäßig unterbrechen
Durch die Funktion "chunk_split
" können wir den String in gleichmäßig große oder kleine Stücke zerlegen.
Dafür übergeben wir die folgenden 3 Parameter:
Der String, der zerlegt werden soll, die Anzahl der Zeichen, an denen der String getrennt wird und ein Trennzeichen, welches an dieser Stelle eingefügt werden soll.
$a = "Aller Anfang ist schwer";
echo chunk_split ($a, 5, "-");
Zeilenumbrüche
Das Ziel der Methode "wordwrap
" ist es, Zeilenumbrüche nach Wörtern einzufügen.
Die Funktion nimmt bis zu 4 Parameter entgegen: "String", "Länge", "Trennzeichen", "Abschneiden".
Nachdem der String angegeben wurde, sind die anderen Parameter nur optional.
Die Länge bestimmt nach wie viel Zeichen der Umbruch erfolgen soll, Standardwert = 75.
Das Trennzeichen wird an der Stelle des Umbruchs eingefügt, Standardwert = \n.
Der letzte Parameter bestimmt, ob ein Wort durchgeschnitten werden darf, 1 = true, Standard ist deaktiviert.
$a = "Aller Anfang ist schwer";
echo wordwrap ($a, 5);
Wo ist nun der Zeilenumbruch? Der Zeilenumbruch durch \n (was für new line steht) wird vom Browser ignoriert. Im Quelltext des Browsers ist er zwar zu sehen, aber die Ausgabe steht in nur einer Zeile.
Abhilfe schafft hier die Funktion "nl2br
" was für "new line to break" steht.
Diese Funktion wandelt das \n in ein <br /> um.
Mit dem Trennzeichen in der HTML-Ausgabe wird auch der Browser den Zeilenumbruch umsetzen.
$a = "Aller Anfang ist schwer";
echo nl2br(wordwrap($a, 5));
Strings und Arrays
Wir werden auf Situationen treffen, an denen wir Strings in Arrays ausgeben lassen wollen oder umgekehrt. Dazu betrachten wir die folgenden Methoden.
String zu Array
Der Methode "explode
" übergeben wir als erstes Argument das Trennzeichen, an der wir aus dem String ein Array machen.
An zweiter Stelle übergeben wir den String, der umgewandelt werden soll.
Der dritte Parameter ist optional und enthält das Limit, in wie viel Array-Elemente geteilt werden soll.
$a = "Aller Anfang ist schwer";
$ausgabe = explode(" ", $a);
echo is_array($ausgabe);
Um zu Bestätigung, ob der String wirklich ein Array ist, können wir mit der Methode "is_array
" abfragen, ob die Variable "$ausgabe" ein Array ist.
Um den Inhalt des Array ausgeben zu lassen, erstellen wir eine kleine Schleife, die solange iteriert, bis alle Array-Elemente ausgegeben wurden.
$a = "Aller Anfang ist schwer";
$ausgabe = explode(" ", $a);
$zaehler = count($ausgabe);
for ($i=0, $j=1; $i<$zaehler; $i++, $j++) {
echo "Wort $j lautet: $ausgabe[$i] <br />";
}
Nun können wird auch den dritten Parameter der Methode "explode
" testen, die das Limit der Array-Elemente festlegt.
$ausgabe = explode(" ", $a, 2);
Mit dem zweiten Array-Element haben wir das Limit erreicht und der restliche String wird zu einem Array-Element zusammengeführt.
Die Methode "str_word_count
" liefert uns eine Zahl mit der Anzahl der Wörter im Array, wenn wir nur das Array als Argument übergeben.
Die Variablen-Informationen lassen wir uns diesmal mit "print_r
" ausgeben, um eine lesbare Form zu erreichen.
$a = "Aller Anfang ist schwer";
print_r(str_word_count($a));
Zusätzlich können wir uns ein Array mit allen Wörtern ausgeben lassen, die im String gefunden werden, wenn wir den optionalen Parameter "Format" mit dem Wert 1 übergeben.
$a = "Aller Anfang ist schwer";
print_r(str_word_count($a, 1));
Wir können uns auch ein assoziatives Array ausgeben lassen, dessen Schlüssel die numerische Position des Wortes im String ist. Dabei werden die Wörter zusammen mit dem Schlüssel ausgegeben. Hierfür geben wir bei dem Parameter "Format" den Wert 2.
$a = "Aller Anfang ist schwer";
print_r(str_word_count($a, 2));
Array zu String
Die Methode, um aus Arrays Strings zu machen, nennt sich "implode
".
Dieser Methode übergeben wir einfach ein Array als Parameter.
$a = array("Aller", "Anfang", "ist", "schwer");
$ausgabe = implode($a);
echo $ausgabe;
Die Array-Elemente werden einfach aneinandergehangen.
Um ein Verbindungszeichen mit einzubauen, geben wir es der Methode "implode
" als ersten Parameter ein Trennzeichen oder ein Leerzeichen mit.
$a = array("Aller", "Anfang", "ist", "schwer");
$ausgabe = implode(" ", $a);
echo $ausgabe;
Anstelle der Methode "implode
" kann auch die Methode "join
" verwendet werden.
Die Funktion ist die gleiche join(Verbindungszeichen, Array)
.
Groß- und Kleinschreibung
Groß- und Kleinschreibung kann bei der Nutzereingabe in Formularen oder ähnlichen zu Problemen führen, weil laut "ASCII-Tabelle" die Werte für große und kleine Buchstaben nicht die gleichen sind.
Um hier eine einheitliche Übersetzung programmseitig zu ermöglichen, verwenden wir die Methoden "strtoupper
" oder "strtolower
", um große oder kleine Buchstaben zu erhalten, egal was der Benutzer eingegeben hat.
$a = "Aller Anfang ist schwer";
echo strtoupper($a);
$a = "Aller Anfang ist schwer";
echo strtolower($a);
Die Methode "ucfirst
" macht aus den ersten Buchstaben eines Arrays/Strings einen Großbuchstaben, auch wenn er vorher klein geschrieben war.
Das bietet sich zum Beispiel für Satzanfänge an.
$a = "aller Anfang ist schwer";
echo ucfirst($a);
Die Methode "ucwords
" macht aus den Anfangsbuchstaben aller Wörter des Arrays Großbuchstaben.
$a = "Aller Anfang ist schwer";
echo ucwords($a);
Weiterhin gibt es noch die Möglichkeiten, die Strings zu beschneiden oder bestimmte Vorkommen darin zu suchen und gegebenenfalls zu ersetzen. Wir haben auch die Möglichkeit, den Umgang mit Sonderzeichen zu behandeln, was gerade im Umgang mit Datenbanken eine enorme Erleichterung ist. Auch das decoden und encoden von Sonderzeichen sowie das Verschlüsseln hat besondere Methoden in PHP.
Weiter mit Mathe