PHP-Arrays und Strings

Umwandlung Arrays ↔ Strukturierte Texte

Alle modernen Programmiersprachen bieten Standard-Funktionen zur Umwandlung strukturierter Strings (Texte) in Arrays und umgekehrt. Auf dieser Seite werden jene Funktionen vorgestellt, die PHP zu diesem Thema bietet.
PHP PHP Hypertext Processor
Arrays in PHP Schlüssel, Indizierte und assoziative Arrays, Speicher
Array & String Standard-Funktionen für systematisch aufgebaute Strings
join Array → String
preg_split String → Array mit Regulärem Ausdruck
implode Array → String
explode String → Array mit Trenn-Zeichen oder -String
Verwandte Themen Extraktion von Array-Teilen, Arrays & Strings in Javascript, Perl, VBA

Arrays und Strings

Diese Funktionen dienen zum Aufbau und zur Zerlegung systematisch aufgebauter Texte, deren Teile durch bestimmte Trennzeichen getrennt sind. Alle modernen Programmiersprachen bieten dazu die beiden Standard-Funktionen join() und split() oder zumindest ähnliche Funktionen.

Beispiele systematisch aufgebauter Strings:

Datum und Zeit (vorzugsweise im Format → ISO-8601)
yyyy-mo-dd hh:mi:ss
Pfade zu Verzeichnissen oder Dateien
C:\Daten\memo\privat\test.txt
/home/ich/memo/privat/test.txt
PHP bietet für die Zerlegung von → Pfaden auch die spezialisierten Funktionen dirname(), basename()
Internet-Adressen
http://www.topsoft.at/pstrainer/pstrainer.htm
Auch in diesem Fall kann man die Funktionen dirname(), basename() verwenden.
Mail-Adressen
vorname.zuname@provider.xyz
IP-Adressen
192.168.0.3
XML
<tag>Daten</tag><tag>Daten</tag>
Versions-Bezeichnungen und -Nummern
Version 6.7.8.9
In vielen anderen technischen und wirtschaftlichen Bereichen werden fach-spezifisch strukturierte Strings verwendet.

Funktion join()

Diese Standard-Funktion erzeugt einen Text (String) aus den Elementen eines Arrays.

Das erste Argument wird als Trennzeichen bzw. Trenn-String zwischen den einzelnen Elementen verwendet, das zweite bezeichnet das Array.
Zahlen-Arrays werden automatisch in Strings umgewandelt. Wenn der Trenn-String leer ist, werden die Elemente direkt (ohne Trennzeichen) aneinander gesetzt.
$j = array(77,88,99);
$t = join('-',$j);
Das ist äquivalent zu
$t = $j[0].'-'.$j[1].'-'.$j[2];
und erzeugt diesen Text:
77-88-99

Funktion preg_split()

Diese Standard-Funktion zerlegt einen systematisch aufgebauten Text (String) in Teile und gibt diese als Array zurück.

Als erstes Argument wird ein String erwartet, welcher einen → Regulärer Ausdruck (RegExp) darstellt. Der RegExp wird selbst durch // begrenzt, d.h. das erste und letzte Zeichen des Strings ist je ein / Zeichen, welches selbst nicht zum RegExp gehört. Innerhalb des RegExp muss man Sonderzeichen wie / \ . mit je einem vorangestellten Backslash maskieren.
Mit dem RegExp wird die Trenn-Bedingung formuliert: Das ist meist ein einzelnes Zeichen, manchmal ein String oder ein komplexer Ausdruck, z.B. eines von mehreren Zeichen.

Das zweite Argument der Funktion ist der zu trennende String.

Die Trennzeichen (bzw. Trenn-Strings) selbst werden bei der Aufspaltung unterdrückt, d.h. die Array-Elemente enthalten nur die Zeichen zwischen den Trenn-Strings.

Tipp: Ersetzen sie die veralteten Funktionen split(), spliti(), ereg_split() in PHP-Programmen durch preg_split()

'Reguläre Ausdrücke' bezeichnet eine Standard-Methode zur Verarbeitung von Strings, die von allen modernen Programmiersprachen und von vielen Dienstprogrammen (z.B. auf Linux) verwendet wird. Eine besondere Stärke von RegExp liegt in der Möglichkeit, sehr komplexe Bedingungen zu formulieren, z.B. Alternativen, Überspringen bestimmter vorangestellter Zeichen, etc.
Details dazu im Kapitel → Reguläre Ausdrücke.
Beispiel: Trennung einer Internet-Adresse (URL):
$t = 'http://test/myweb/index.htm';
$s = preg_split("/\//",$t);
Liefert das Array $s mit 5 Elementen
('http:','','test','myweb','index.htm')
Das 2. Array-Element ist ein leerer String (Text ohne Inhalt), da im Text-Argument zwei Trennzeichen unmittelbar aufeinander folgen.
Im Regulären Ausdruck wird das / Trennzeichen mit einem \ Backslash maskiert.
Beispiel: Trennung einer → IPv4-Adresse (mit Port-Angabe):
$t = '192.168.0.12:34';
$s = preg_split("/[\.:]/",$t);
for($i=0;$i<count($s);$i++) {$s[$i]+=0;}
Liefert das Array $s mit 5 Elementen
(192,168,0,12,34)
Im RegExp sind die beiden Zeichen . Punkt (maskiert) und : Doppelpunkt durch Einschluss in [] als alternative Trennzeichen definiert.
Die Addition der Zahl 0 zu jedem Element stellt sicher, dass die Elemente für die nachfolgende Verarbeitung als Zahlen vorliegen.
Beispiel: Trennung eines Standard → ISO-Datum-Strings:
$t = 'yyyy-mo-dd hh:mi:ss';
$s = preg_split("/[-: ]/",$t);
for($i=0;$i<count($s);$i++) {$s[$i]+=0;}
Liefert ein Array $s mit den 6 Datum- und Zeit-Elementen
(Jahr,Monat,Tag,Stunde,Minute,Sekunde)
Dieses Beispiel zeigt, wie einfach Strings des Standard-Formats → ISO-8601 verarbeitet werden können.

Funktionen implode() und explode()

Funktion   implode()

Der Funktions-Name implode() ist ein Alias zu join(), d.h. damit wird die gleiche PHP-Funktion aufgerufen.
Die Funktion verbindet die Elemente eines Arrays zu einem String.
$j = array(77,88,99);
$t = implode('-',$j);
print("t=$t<br>");
Das Beispiel gibt diesen Text aus:
77-88-99

Funktion   explode()

Die Funktion zerlegt einen Text (string) in Teile und gibt diese als Array zurück.
Das erste Argument bezeichnet das Trenn-Zeichen oder den Trenn-String, nach dem getrennt werden soll. Hier ist kein Regulärer Ausdruck möglich, obwohl einfache Fälle gleich aussehen können.
So wie bei Funktion preg_split() wird auch hier der Trenn-String unterdrückt.
Das zweite Argument bezeichnet den zu trennenden String (Text).
Ein optionales 3. Argument gibt die maximale Anzahl der Elemente im Ergebnis-Array an.

$t = '192.168.0.12';
$s = explode('.',$t);
for($i=0;$i<count($s);$i++) {$s[$i]+=0;}
Liefert das Array $s mit 4 Elementen
(192,168,0,12)
Ein allfälliger Port (am Ende nach : Doppelpunkt) kann mit explode() nicht in einem Schritt isoliert werden.