

Soll ein String anhand eines Teilstrings zerlegt und die einzelnen Teilstücke in einem Array gespeichert werden, sind die gängigsten verwendeten PHP-Funktionen split(), preg_split() und explode(). Da split() und preg_split() im Gegensatz zu explode() mit regulären Ausdrücken arbeiten, ist zu erwarten, dass explode() die schnellste Variante ist.
Das Beispiel-Script mit split() ist nur der Vollständigkeit halber aufgeführt. Seit PHP Version 5.3 gilt split() als veraltet und hat in PHP-Scripten im Februar 2012 nichts mehr zu suchen.
Code:<?
$teilstring="f";
$gesamtstring="abcdefghijk";
for ($i=0;$i<10000;$i++){
$test=split($teilstring,$gesamtstring);
}
?>
Erläuterung:
Der String abcdefghijk wird anhand des Delimiters f in zwei Teile zerlegt. Das Zerlegen erfolgt mit split() innerhalb einer Schleife mit 10.000 Durchläufen.
Code:<?
$teilstring="f";
$gesamtstring="abcdefghijk";
for ($i=0;$i<10000;$i++){
$test=preg_split("/".$teilstring."/",$gesamtstring);
}
?>
Erläuterung:
Im zweiten Beispiel-Script erfolgt die Zerlegung des Strings mit preg_split(().
Code:<?
$teilstring="f";
$gesamtstring="abcdefghijk";
for ($i=0;$i<10000;$i++){
$test=explode($teilstring,$gesamtstring);
}
?>
Erläuterung:
Im dritten Beispiel-Code wird der String mit der PHP-Funktion explode() zerlegt.
| Requests per second (RPS) | Time per Request (TPR) | Vergleich | ||
| String mit 10 Zeichen zerlegen mit split() | 36.24 [#/sec] (mean) | 27.594 [ms] (mean) | 51.6% | 34.0% |
| String mit 10 Zeichen zerlegen mit preg_split() | 23.91 [#/sec] (mean) | 41.828 [ms] (mean) | ||
| String mit 10 Zeichen zerlegen mit explode() | 52.37 [#/sec] (mean) | 19.094 [ms] (mean) | 119.0% | 54.4% |
Das split() verwendende Beispiel-Script spart 34% der Ausführzeit des Codes mit preg_split() während der PHP-Code mit explode() mehr als doppelt so schnell ausgeführt wurde wie der Code mit preg_split().
Wenn es um das einfache Zerlegen einer Zeichenkette anhand eines Teilstrings ohne Verwendung regulärer Ausdrücke geht, ist explode() die beste Wahl weil mit großem Abstand schnellste Variante. preg_split() ist in unserem Beispiel deutlich langsamer als split(), weil an split() ein einfacher String, an preg_split() ein regulärer Ausdruck übergeben wurde. Die vorzuziehende Variante, wenn beim Zerlegen reguläre Ausdrücke verwendet oder zusätzliche Parameter übergeben werden sollen ist aus eingangs genannten Gründen in jedem Fall preg_split().
Anmerkung:
Die Tests wurden mit dem Apache HTTP server benchmarking tool ab auf einem im Februar 2012 nicht mehr dem Stand der Technik entsprechenden Server durchgeführt. Die RPS und TPR der getesteten PHP-Scripte sollten auf einem im Produktiv-Einsatz befindlichen Webserver deutlich besser sein.