1. explode()
Strings können mit explode($zeichen, $string) an bestimmten Zeichen getrennt bzw. aufgesplittet werden. Es ergibt sich dann ein Array, welches 0 bis n Strings enthält.
<?php $tagsAsString = 'Essen, Birne, Schokolade, Eis'; $tagsAsArray = explode(',', $tagsAsString); var_dump($tagsAsArray); ?>
array(4) { [0]=> string(5) "Essen" [1]=> string(6) " Birne" [2]=> string(11) " Schokolade" [3]=> string(4) " Eis" }
2. Überflüssige Leerzeichen entfernen
Häufig erhält man — wie im vorherigen Beispiel — Teilstücke des Strings, die noch unerwünschte Leerzeichen am Anfang oder am Ende enthalten. Diese können mit trim() entfernt werden. Mit array_map() oder array_walk() wiederum kann trim() auf jeden Eintrag des Arrays angewendet werden.
Bei Verwendung von array_map():
<?php $tags = explode(',', 'Beispieltag1, Beispieltag2, Beispieltag3,Beispieltag4'); $tags = array_map('trim', $tags); var_dump($tags); ?>
array(4) { [0]=> string(12) "Beispieltag1" [1]=> string(12) "Beispieltag2" [2]=> string(12) "Beispieltag3" [3]=> string(12) "Beispieltag4" }
Bei Verwendung von array_walk():
<?php $tags = explode(',', 'Beispieltag1, Beispieltag2, Beispieltag3,Beispieltag4'); array_walk($tags, function(&$val) { $val = trim($val); }); var_dump($tags); ?>
array(4) { [0]=> string(12) "Beispieltag1" [1]=> string(12) "Beispieltag2" [2]=> string(12) "Beispieltag3" [3]=> string(12) "Beispieltag4" }
3. Leere Elemente aus dem Ergebnisarray entfernen
Im Ergebnis von explode() können auch leere Strings als Arrayelemente enthalten sein. Je nach Verwendungszweck ist dies möglicherweise nicht erwünscht. Zum Entfernen dieser kann array_diff($arr1, $arr2) benutzt werden, alle Elemente aus $arr1 entfernt, die auch in $arr2 vorkommen.
<?php $tagsAsString = 'Essen,Birne,,Schokolade'; $tagsAsArray = explode(',', $tagsAsString); var_dump($tagsAsArray); var_dump(array_diff($tagsAsArray, array(''))); ?>
array(4) { [0]=> string(5) "Essen" [1]=> string(5) "Birne" [2]=> string(0) "" [3]=> string(10) "Schokolade" } array(3) { [0]=> string(5) "Essen" [1]=> string(5) "Birne" [3]=> string(10) "Schokolade" }
4. explode() mit längerem String
explode() muss nicht zwangsweise mit einem String als Trennzeichen aufgerufen werden, welcher nur ein einziges Zeichen enthält. Es ist auch erlaubt, mehrere zu übergeben. Getrennt wird dann, wenn diese Zeichen in der Reihenfolge auftauchen, in der sie übergeben wurden.
<?php $tagsAsString = 'Essen()Birne()Schokolade)(Eis'; $tagsAsArray = explode('()', $tagsAsString); var_dump($tagsAsArray); ?>
array(3) { [0]=> string(5) "Essen" [1]=> string(5) "Birne" [2]=> string(15) "Schokolade)(Eis" }
5. String anhand eines regulären Ausdrucks aufteilen
Die Funktion preg_split($regex, $str) kann verwendet werden, um $str anhand des regulären Ausdrucks $regex aufzutrennen. Im nachfolgenden Beispiel werden die Tags nach belieben durch Kommata, Semikolons oder Schrägstriche getrennt. Entsprechend wird nach diesen Zeichen gesucht. Zudem werden Leerzeichen direkt vor und nach dem Trennzeichen ebenfalls als Teil des Trennzeichens gesehen.
<?php // Die Trennzeichen, aber so markiert, dass sie nicht mehr als Regex-Steuerungszeichen // interpretiert werden $trennzeichen = preg_quote(',;/'); // Der regulaere Ausdruck: // beliebig viele Leerzeichen, dann 1 bis n Trennzeichen, dann beliebig viele Leerzeichen $regex = '\s*['.$trennzeichen.']+\s*'; // Zu trennender String $tagsAsString = 'Essen, Birne; Schokolade ,, Eis /Sahne'; // split-Kommando $tagsAsArray = preg_split('='.$regex.'=u', $tagsAsString); // Ausgabe var_dump($tagsAsArray); ?>
array(5) { [0]=> string(5) "Essen" [1]=> string(5) "Birne" [2]=> string(10) "Schokolade" [3]=> string(3) "Eis" [4]=> string(5) "Sahne" }
6. String anhand mehrerer beliebiger Zeichen auftrennen
Das vorherige Beispiel zu preg_split() kann weitergeführt werden, um daraus eine Funktion zu bauen, die einen beliebigen String an beliebig gewählten Trennzeichen auftrennt. In diesem Beispiel wird die Funktion „splitByChars” definiert, welche als ersten Parameter den zu trennenden String und als zweiten die Trennzeichen als String erwartet. Optional können die Trennzeichen auch als Array übergeben werden. Rückgabe ist ein Array mit 0 bis n Strings als Elementen.
<?php function splitByChars($str, $chars) { $regex = (is_array($chars) ? implode('', $chars) : $chars); $regex = preg_quote($chars); $regex = addcslashes($chars, '='); $regex = '\s*['.$regex.']+\s*'; return preg_split('='.$regex.'=u', $str); } $tagsAsString = 'Essen, Birne; Schokolade, Eis === Sahne ~ Beispiel'; var_dump(splitByChars($tagsAsString, ',;/=')); ?>
array(5) { [0]=> string(5) "Essen" [1]=> string(5) "Birne" [2]=> string(10) "Schokolade" [3]=> string(3) "Eis" [4]=> string(16) "Sahne ~ Beispiel" }
7. String in Blöcke mit fester Länge aufteilen
Die Funktion str_split($str, $length) dient dazu, einen String in mehrere kleinere Strings fester Maximallänge aufzuteilen. Sie erwartet als ersten Parameter den aufzuteilenden String und als zweiten die Maximallänge pro Block.
<?php $str = '0123456789'; $arr = str_split($str, 3); // $arr enthaelt die Strings 012, 345, 678 und 9 // mit implode(' / ', $arr) werden diese in einen einzelnen String // umgewandelt, in welchen die Bloecke durch Schraegstriche getrennt sind echo( implode(' / ', $arr) ); ?>
012 / 345 / 678 / 9
Kommentare (1)
Von neu nach altWir bitten um ihr Verständnis.