1. Einzelne Zeichen auslesen
Um einzelne Zeichen aus einem String auszulesen kann man die Zeichenkette wie ein Array behandeln. Es wird dann per $str[index] auf das Zeichen zugegriffen. Auch gültig, aber veraltet, ist die Schreibweise $str{index}.
<?php $str = 'Das ist ein Beispielstring.'; var_dump($str[2]); var_dump($str{2}); var_dump($str[100]); // erzeugt (string)"" und eine Warnung, da der String weniger als 100 Zeichen umfasst ?>
string(1) "s" string(1) "s" <br /> <b>Notice</b>: Uninitialized string offset: 100 in <b>...\test.php</b> on line <b>6</b><br /> string(0) ""
2. Längere Zeichenketten auslesen
Sofern der String nur aus ASCII-Zeichen besteht kann über substr($str, $startIndex, $laenge) ein Teilabschnitt aus diesem ausgelesen werden. Der Abschnitt beginnt bei $startIndex und umfasst $laenge Zeichen. Das erste Zeichen im String hat den Index 0. Die Rückgabe der Funktion ist ein neuer String.
<?php $str = 'Das ist ein Beispielstring.'; var_dump(substr($str, 4, 3)); // erzeugt (string) "ist" // Ist die Laenge zu lang, dann gibt substr so viel zurueck wie moeglich ist: var_dump(substr($str, 0, 10000)); // erzeugt (string) "Das ist ein Beispielstring." // Liegt $startIndex ausserhalb des definierten Bereichs, dann gibt substr (bool)false zurueck: var_dump(substr($str, 10000, 1)); // erzeugt (bool) false // Es koennen auch negative Werte uebergeben werden: var_dump(substr($str, -3, 3)); // erzeugt die letzten drei Zeichen: (string) "ng." ?>
string(3) "ist" string(27) "Das ist ein Beispielstring." bool(false) string(3) "ng."
3. Längere Zeichenketten auslesen (UTF-8)
Falls auch nicht ASCII-Zeichen verwendet werden sollen, muss mb_substr() statt substr() verwendet werden. mb_substr() kann auch auf ASCII-Strings angewendet werden, ist allerdings geringfügig langsamer als substr().
<?php $str = 'αβγδ'; var_dump(substr($str, 0, 2)); // fuer substr besteht alpha aus zwei Zeichen var_dump(mb_substr($str, 0, 2, 'UTF-8')); // Achtung: mb_substr() gibt bei zu hohem Startwert einen leeren String zurueck // statt (bool)false wie es substr() macht $str = 'abc'; var_dump(substr($str, 100, 1)); // erzeugt: (bool) false var_dump(mb_substr($str, 100, 1)); // erzeugt: string(0) "" ?>
string(2) "α" string(4) "αβ" bool(false) string(0) ""
4. Zeichenkette auslesen und ersetzen
Soll die Zeichenkette nicht nur ausgelesen, sondern auch im ursprünglichen String ersetzt werden, so ist eine Kombination aus substr() und substr_replace() zu verwenden. substr_replace() wird genauso wie substr() aufgerufen, hat aber noch an zweiter Stelle den zusätzlichen Parameter $replacement. Dieser bestimmt, was als Ersatz für die Zeichenkette von $startIndex bis $startIndex+$laenge eingesetzt werden soll. Da es im nachfolgenden Beispiel Ziel ist, diese Zeichenkette zu entfernen, wird für $replacement ein leerer String gewählt.
<?php $str = 'Das ist ein Beispielstring.'; $part = substr($str, 4, 3); $str = substr_replace($str, '', 4, 3); var_dump($part, $str); ?>
string(3) "ist" string(24) "Das ein Beispielstring."