Man kann die einzelnen Zeichen in einem String ähnlich wie ein Array ansprechen, allerdings verwendet man anstelle der eckigen Klammern [ und ] geschweifte Klammern: { und }.
$str = "teststring"; $len = strlen($str); for($i=0; $i<$len; $i++) printf("Zeichen %d ist %s<br>\n", $i, $str{$i});
Diese Methode ist auch geeignet, um einen String in ein Array umzuwandeln:
function stringToArray($string) { $array = array(); for($i=0; $i<strlen($string); $i++) $array[$i] = $string{$i}; return $array; }
Das oben Stehende ist so nicht (mehr) korrekt. Es wurde inzwischen festgelegt, dass einzelne Zeichen eines Strings wie Array-Elemente mittels der eckigen Klammern [ und ] angesprochen werden. Die beschriebene Umwandlung in ein Array erübrigt sich dadurch vollständig.
In der Version PHP6 soll die Schreibweise mit den geschweiften Klammern nicht mehr zulässig sein.
Um einen String in Teile fester Länge zu zerlegen, verwendet man die Funktion str_split():
$arr = str_split( "Hallo Welt!", 3 ); print_r( $arr );
ergibt
Array
(
[0] => Hal
[1] => lo
[2] => Wel
[3] => t!
)
Mit Hilfe der Funktion substr() kann man Teilstrings aus einem String herausschneiden.
Mit Hilfe der Funktion explode() kann man einen String an einem Trennzeichen in ein Array zerlegen.
$str = "dies ist ein teststring."; $avar = explode(" ", $str); $len = count($avar); for ($i=0; $i<$len; $i++) printf("%d: %s<br>\n", $i, $avar[$i]);
Dieses Beispiel zerlegt den gegebenen Teststring an den Leerzeichen und erzeugt ein Array $avar mit den Indices 0 bis 3 (4 Elementen).
Kompliziertere Zerlegungen lassen sich mit Hilfe der Funktion preg_split() vornehmen. Das veraltete, weniger leistungsfähigere und langsamere split() könnte man auch verwenden.
$str = "ich bin ein sehr komplizierter test, nicht wahr?"; $avar = preg_split("/[ \t.!?]+/", $str); $len = count($avar); for ($i=0; $i<$len; $i++) printf("%d: %s<br>\n", $i, $avar[$i]);
Im Gegensatz zum vorhergehenden Beispiel werden hier mehrfache Leerzeichen nicht als mehrfache Trennungen gezählt und auch Satzzeichen werden zu den Trennzeichen gezählt.






