Arne P.: Performance - Vergleich reg Expr.

Beitrag lesen

Hi.

Zitat von http://www.php.net/manual/de/function.str-replace.php:
string str_replace ( string needle, string str, string haystack)

Diese Funktion ersetzt alle Vorkommen von needle innerhalb der Zeichenkette haystack durch den String str.

Das stimmt, aber nach folgendem Schema:

Gegebener String:
  $str = "#..........#"; //10 Punkte

(wir können ja Punkte statt Leerzeichen verwenden, ist übersichtlicher)

Nach einem Durchlauf

$str = str_replace("..",".",$str); // geht bei den Regex-Ersetzungen natürlich nicht ;-)

erhalten wir:

"#.....#"; //5 Punkte

Dies kommt daher, daß str_replace() den String von vorne (oder hinten?) durchsucht und dabei jedes Vorkommen von 2 Punkten durch 1 Punkt durchsucht. Am Ende angekommen wird der String nicht noch einmal nach weiteren Vorkommen durchsucht.

Es werden dabei 5x 2 Punkte gefunden, die dann ersetzt werden, also bleiben 5 Punkte am Ende übrig.

Wenn Du mir nicht glaubst, probier es aus! ;-)

Anmerkung: Die Funktion preg_replace(), die eine zu Perl kompatible Syntax regulärer Ausdrücke verwendet, ist häufig die schnellere Alternative zu ereg_replace().

Wer lesen kann ist klar im Vorteil ;-)
Bei meiner Offline-Doku steht der zweite Halbsatz nicht drinnen... vielleicht sollte ich mir mal eine neue Version runterladen... Danke! :-)

MfG, Arne P.