Andreas: Performance - Vergleich reg Expr.

Beitrag lesen

Hallo!

$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.

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.

$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...

Zitat von http://www.php.net/manual/de/function.ereg-replace.php:
string ereg_replace ( string Suchmuster, string Ersatz, string Zeichenkette)

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().

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.

s.o.

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.

klar, ist aber gleichzeitig schneller!

Dazu: http://www.dclp-faq.de/q-regexp-ereg.html

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

Danke ;-)

Grüße
Andreas