| 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
PHP bietet für die Zerlegung von
→ Pfaden
auch die spezialisierten Funktionen dirname(), basename()/home/ich/memo/privat/test.txt ● 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 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';
Liefert das Array $s mit 5 Elementen
$s = preg_split("/\//",$t); ('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';
Liefert das Array $s mit 5 Elementen
$s = preg_split("/[\.:]/",$t); for($i=0;$i<count($s);$i++) {$s[$i]+=0;} (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';
Liefert ein Array $s mit den 6 Datum- und Zeit-Elementen
$s = preg_split("/[-: ]/",$t); for($i=0;$i<count($s);$i++) {$s[$i]+=0;} (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);
Das Beispiel gibt diesen Text aus:
$t = implode('-',$j); print("t=$t<br>"); 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';
Liefert das Array $s mit 4 Elementen
$s = explode('.',$t); for($i=0;$i<count($s);$i++) {$s[$i]+=0;} (192,168,0,12)
Ein allfälliger Port (am Ende nach : Doppelpunkt)
kann mit explode() nicht in einem Schritt isoliert werden.
|
|