Hi!
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! ;-)
OK:
<?php
$laenge_vor=1;
$laenge_nach=0;
$string = "quatsch....quatschquatsch.............quatschquatschquatsch";
while($laenge_vor > $laenge_nach) {
$laenge_vor = strlen ($string);
$string = str_replace ("..",".",$string);
$laenge_nach = strlen ($string);
}
?>
so in etwa sollte es gehen, komme aber für keine Schäden auf ;-)
?>
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 ;-)
sehe ich genau so, hätte oben mal besser lesen sollen ;-)
Bei meiner Offline-Doku steht der zweite Halbsatz nicht drinnen... vielleicht sollte ich mir mal eine neue Version runterladen... Danke! :-)
Wozu gibt es Flatrates....
Grüße
Andreas