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.