Reguläre Ausdrücke oder str_replace ?
Bernd
- php
0 Joachim0 André Laugks0 Fabian St.0 rob
Hallo,
ich möchte in einem String Leerzeichen, Umlaute und sonstige nicht-Zahlung und nicht-Buchstaben ersetzen. Wäre es effizienter für den Server ein paar mal str_replace durchlaufen zu lassen oder es mit preg_replace zu versuchen? Kann man überhaupt mit preg_replace mehrere Umlaute auf einen Schlag ändern (ä -> ae oder ö -> oe)?
Gruß Bernd
Hi,
Kann man überhaupt mit preg_replace mehrere Umlaute auf einen Schlag ändern (ä -> ae oder ö -> oe)?
Siehe Bsp 5
Gruesse, Joachim
Hallo!
Wäre es effizienter für den Server ein paar mal str_replace durchlaufen zu lassen oder es mit preg_replace zu versuchen?
str_replace ist natürlich schneller.
Unter http://www.php.net/str_replace gibt es auch ein Beispiel.
siehe:
// Provides: You should eat pizza, beer, and ice cream every day
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
André Laugks
Hi!
ich möchte in einem String Leerzeichen, Umlaute und sonstige nicht-Zahlung und nicht-Buchstaben ersetzen. Wäre es effizienter für den Server ein paar mal str_replace durchlaufen zu lassen oder es mit preg_replace zu versuchen? Kann man überhaupt mit preg_replace mehrere Umlaute auf einen Schlag ändern (ä -> ae oder ö -> oe)?
Leerzeichen und Umlaute lassen sich einfach mit str_replace ersetzen. str_replace hat zudem den Vorteil, dass du für das Suchmuster und die Ersetzungen Arrays verwenden kannst, was bei preg_replace nicht möglich ist, d.h. du kannst auf einen Schlag mehrere verschiedene Ersetzungen durchführen:
$string = 'Ein String mit vielen Umlauten: ÄäÜüÖö';
$search = array('Ä', 'ä', 'Ö', 'ö', 'Ü', 'ü');
$replace = array('Ae', 'ae', 'Oe', 'oe', 'Ue', 'ue');
$string = str_replace($search, $replace, $string);
echo $string; // Ausgabe: Ein String mit vielen Umlauten: AeaeUeueOeoe
Zudem ist str_replace schneller als preg_replace. Solltest du jedoch kompliziertere Stringersetzungen brauchen, solltest du preg_replace den Vorzug geben.
Grüße,
Fabian St.
Hi,
str_replace hat zudem den Vorteil, dass du für das Suchmuster und die Ersetzungen Arrays verwenden kannst, was bei preg_replace nicht möglich ist
Doch, das geht:
$str = "Dies; ist, ein. Text;.!,";
$xy = array("/./","/,/","/;/",);
$zy = array( " "," "," ",);
echo preg_replace($xy, $xz, $str);
Gruesse, Joachim
Hi,
Doch, das geht:
$str = "Dies; ist, ein. Text;.!,";
$xy = array("/./","/,/","/;/",);
$zy = array( " "," "," ",);
echo preg_replace($xy, $xz, $str);
Warum so umständlich?
$str = "Dies; ist, ein. Text;.!, ";
$xy = array("/\./","/,/","/;/",);
$zy = " ";
echo preg_replace($xy, $zy, $str);
;-)
Gruß, Cybaer
Hi Cybaer,
Warum so umständlich?
$str = "Dies; ist, ein. Text;.!, ";
$xy = array("/./","/,/","/;/",);
$zy = " ";
echo preg_replace($xy, $zy, $str);
Warum nicht noch einfacher?
~~~php
$str = "Dies; ist, ein. Text;.!, ";
echo preg_replace("/[,.;]/", " ", $str);
;-)
MfG, Dennis.
Hi,
Warum so umständlich?
bitte Leute, das war eine Demo das Arrays angenommen werden. Statt " ", " ", " " haette ich auch "haarwasser", "haareraufer", "haarespalter" schreiben koennen ;-)
Gruesse, Joachim
Hi,
Statt " ", " ", " " haette ich auch "haarwasser", "haareraufer", "haarespalter" schreiben koennen ;-)
Klaaaaaar. ;-)
Aber immerhin ist es IMHO doch ggf. interessant, daß man für den Ersatz zwar ein Array verwenden kann, dies aber nicht muß - auch wenn das zu Ersetzende in einem Array steht. :)
Gruß, Cybaer
Hi,
Warum nicht noch einfacher?
Weil das dann *überhaupt kein* Array mehr enthält? =;-)
Gruß, Cybaer
Hi Cybaer,
Warum nicht noch einfacher?
Weil das dann *überhaupt kein* Array mehr enthält? =;-)
Was das überhaupt die „Aufgabenstellung”? =)
MfG, Dennis.
Hi,
Weil das dann *überhaupt kein* Array mehr enthält? =;-)
Was das überhaupt die „Aufgabenstellung”? =)
Interessiert die im Laufe eines Threads denn überhaupt noch? O:-)
Gruß, Cybaer
Hi Cybaer,
Was das überhaupt die „Aufgabenstellung”? =)
Interessiert die im Laufe eines Threads denn überhaupt noch? O:-)
Das muss ich mal einem Lehrer in während einer Arbeit sagen... ;-)
MfG, Dennis.
Hi,
Was das überhaupt die „Aufgabenstellung”? =)
Interessiert die im Laufe eines Threads denn überhaupt noch? O:-)
Das muss ich mal einem Lehrer in während einer Arbeit sagen... ;-)
Warnung: Du könntest einen Threat auslösen! ;-)
Gruß, Cybaer
Hi Cybaer,
Warnung: Du könntest einen Threat auslösen! ;-)
Könnte leicht passieren, vor allem bei so Lehrer, die zu 100% humorlos sind und keine Witze verstehen - so etwas gibt es leider. "Pädagogisch nicht sinnvoll" (für die Schüler), wie es ein Lehrer formulieren würde ;-)
MfG, Dennis.
Hi,
Könnte leicht passieren, vor allem bei so Lehrer, die zu 100% humorlos sind und keine Witze verstehen - so etwas gibt es leider.
Echt? Ich dachte, die wären alle so! ;->
Gruß, Cybaer
PS: Sprech mal einen beliebigen Einzelhändler an auf das Thema: "Wie sind eigentlich Lehrer als Kunden?" >;->
Hi Cybaer,
Echt? Ich dachte, die wären alle so! ;->
Ne, sind nur 99% :-P
PS: Sprech mal einen beliebigen Einzelhändler an auf das Thema: "Wie sind eigentlich Lehrer als Kunden?" >;->
Der arme Einzelhändler - zwing ihn doch nicht, sich an so etwas zu erinnern *g*
MfG, Dennis.
Hi!
str_replace hat zudem den Vorteil, dass du für das Suchmuster und die Ersetzungen Arrays verwenden kannst, was bei preg_replace nicht möglich ist
Doch, das geht:
[...]
Du hast recht ;-) Ich hätte mir selber bloß den Link anschauen müssen... Ich hatte jedoch irgendwie im Kopf, dass eine dieser preg_*-Funktionen kein Array als Parameter akzeptiert.
Grüße,
Fabian St.
Hallo,
dass man str_replace mit Array einsetzen kann ist mir neu. Gute Idee!
mfg Bernd
Wäre es effizienter für den Server ein paar mal str_replace durchlaufen zu lassen oder es mit preg_replace zu versuchen?
Tja, das kommt drauf an, wie oft "ein paar mal" sind...
Generell solltest du immer die String-Funktionen nutzen, wenn es gut möglich ist. Die arbeiten um einiges schneller als reguläre Ausdrücke. RegExps sind immer langsam. Die PCRE-Funktionen (also die mit "preg") arbeiten schneller als die älteren POSIX-kompatiblen, aber trotzdem sind sie noch langsam.
Wenn es dir nur auf eine kurze Ersetzung ankommt (vielleicht bei einem Gästebuch oder so), dann wird das überhaupt keine Rolle spielen. Wenn du aber viele solche Ersetzungen durchführst, dann kann das natürlich irgendwann schon ins Gewicht fallen.
Ich schätze die String-Funktionen sind vielleicht 10mal schneller als die preg-Funktionen. Das ist aber wirklich nur eine Schätzung. Wenn du es genau wissen willst, dann kannst du es ja selber ausprobieren.
Laß dir die aktuelle Zeit in Microsekunden ausgeben, führe deine Ersetzung durch und laß dir danach wieder die aktuelle Zeit in Microsekunden ausgeben.
So siehst du dann doch, wie lange die Ersetzungen gedauert haben und was in deinem Fall schneller ist.
Gruß,
rob