String an bestimmten Zeichen trennen (Thema: PHP Beispiele)

PHP-Funktionen, um Strings an bestimmten Zeichen zu trennen und so Arrays zu erzeugen

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-Code
1
2
3
4
5
<?php
    $tagsAsString = 'Essen, Birne, Schokolade, Eis';
    $tagsAsArray = explode(',', $tagsAsString);
    var_dump($tagsAsArray);
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
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-Code: array_map
1
2
3
4
5
<?php
    $tags = explode(',', 'Beispieltag1, Beispieltag2, Beispieltag3,Beispieltag4');
    $tags = array_map('trim', $tags);
    var_dump($tags);
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
array(4) {
  [0]=>
  string(12) "Beispieltag1"
  [1]=>
  string(12) "Beispieltag2"
  [2]=>
  string(12) "Beispieltag3"
  [3]=>
  string(12) "Beispieltag4"
}

Bei Verwendung von array_walk():

PHP-Code: array_walk
1
2
3
4
5
<?php
    $tags = explode(',', 'Beispieltag1, Beispieltag2, Beispieltag3,Beispieltag4');
    array_walk($tags, function(&$val) { $val = trim($val); });
    var_dump($tags);
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
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-Code
1
2
3
4
5
6
<?php
    $tagsAsString = 'Essen,Birne,,Schokolade';
    $tagsAsArray = explode(',', $tagsAsString);
    var_dump($tagsAsArray);
    var_dump(array_diff($tagsAsArray, array('')));
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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-Code
1
2
3
4
5
<?php
    $tagsAsString = 'Essen()Birne()Schokolade)(Eis';
    $tagsAsArray = explode('()', $tagsAsString);
    var_dump($tagsAsArray);
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
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-Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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);
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
11
12
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-Code
1
2
3
4
5
6
7
8
9
10
11
12
<?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, ',;/='));
?>
HTML-Code: Ausgabe
1
2
3
4
5
6
7
8
9
10
11
12
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-Code
1
2
3
4
5
6
7
8
9
<?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) );
?>
HTML-Code: Ausgabe
1
012 / 345 / 678 / 9

Kommentare (1)

Von neu nach alt
Das Erstellen neuer Kommentare ist aufgrund der Einführung der europäischen Datenschutz-Grundverordnung (DSGVO) derzeit deaktiviert.
Wir bitten um ihr Verständnis.
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
ArnoNuehm (Gast) #
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK