Hi.
$str = str_replace(" "," ",$str);
Das geht gar nicht, da der gesamte String nur einmal durchsucht wird. Es müßten also mehrere Aufrufe erfolgen!
str_replace durchsucht den String einmal von vorne nach hinten und sucht somit an jeder Stelle genau einmal. Die beiden anderen suchen aber ein oder mehr Leerzeichen und ersetzen sie druch ein einzelnes Leerzeichen.
$str = preg_replace("/ +/"," ",$str);
$str = ereg_replace(" +"," ",$str);
Vermutlich ist das die Reigenfolge nach Geschwindigkeit geordnet, oder?
Keine Ahnung, welches schneller ist, müßte man mal ausprobieren...
Sollte man nicht wo geht immer str_replace() verwenden
Für einzelne Zeichen schon. Aber wenn man "mehr" ersetzen will (wie im Beispiel), braucht man eben reguläre Ausdrücke.
und sonst preg_replace(), und nie ereg_replace()?
preg_replace ist Perl-kompatibel, hat im Zweifelsfalle mehr Funktionen als ereg_replace (denke ich doch, Perls Regex ist ja ziemlich mächtig). Mit preg_replace kann man z.B. Arrays als Argumente nehmen, bei ereg_replace nicht.
Siehe auch <img src="http://selfaktuell.teamone.de/src/de.gif" border=0 alt=""> http://www.php.net/manual/de/function.ereg-replace.php und <img src="http://selfaktuell.teamone.de/src/en.gif" border=0 alt=""> http://www.php.net/manual/de/function.preg-replace.php