ereg_replace
Roger
- php
moin!
mit ereg_replace("lala", $foo, $string) ersetzte ich alle lala's mit $foo in $string.
jetzt möchte ich aber alle lala und lolo mit $foo ersetzen.
wie mache ich das?
ereg_replace("lala|lolo", $foo, $string)?
gruß.
roger.
Moin Roger!
nutze besser die preg_* funktonen, in deinem fall preg_replace(), da diese schneller sind als die ereg_* funktionen.
dann lies dir das mal durch.
in deinem falle sähe dein code so aus:
<?php
$pattern = "/(lala|lolo)/";
$return = preg_replace($pattern,$foo,$string);
echo $return;
?>
hoffe ich konnte helfen.
tschüssi
ichen
Hallo,
nutze besser die preg_* funktonen, in deinem fall preg_replace(), da diese schneller sind als die ereg_* funktionen.
lustig ist, dass preg_replace sogar schneller als str_replace läuft.
kennt jemand die Ursache hierfür?
Gruß,
Benne
Hallo Benne.
lustig ist, dass preg_replace sogar schneller als str_replace läuft.
Das bezweifle ich.
kennt jemand die Ursache hierfür?
Wie sieht dein Versuchsaufbau aus?
Einen schönen Samstag noch.
Gruß, Ashura
Hallo.
Wie sieht dein Versuchsaufbau aus?
Ich kann hier zumindest schon einmal meinen präsentieren.
(Das ursprüngliche Skript stammt von Marc Reichelt.)
<?php
// Performance-Test
header("Content-type: text/plain");
echo "Starte Geschwindigkeitstest...\n";
$string = "Hello Welt";
$times = 1000000;
// erster Durchlauf
$begintime = explode(" ", microtime());
$begintime = (float)$begintime[0] + (float)$begintime[1];
for($i=0; $i<$times; $i++)
{
str_replace("Hello","Hallo",$string);
}
$endtime = explode(" ", microtime());
$endtime = (float)$endtime[0] + (float)$endtime[1];
$firsttime = $endtime - $begintime;
// zweiter Durchlauf
$begintime = explode(" ", microtime());
$begintime = (float)$begintime[0] + (float)$begintime[1];
for($i=0; $i<$times; $i++)
{
preg_replace("/Hello/","Hallo",$string);
}
$endtime = explode(" ", microtime());
$endtime = (float)$endtime[0] + (float)$endtime[1];
$secondtime = $endtime - $begintime;
// Ausgabe
echo "Erster Durchlauf (str_replace) : $firsttime Sekunden\n";
echo "Zweiter Durchlauf (preg_replace): $secondtime Sekunden\n";
echo "Prozentual (1/2): ". $firsttime/$secondtime ."\n";
?>
Ich habe mehrere Test durchlaufen lassen und das Ergebnis spricht eindeutig für den enormen Geschwindigkeitsvorteil von str_replace gegenüber preg_replace. (Ersteres ist ca. doppelt so schnell wie Zweiteres.)
Einen schönen Samstag noch.
Gruß, Ashura
Moin Ashura!
bemerkenswert. Das sagt auch das Manual:
[cite]
Falls Sie keine ausgefallenen String-Ersetzungen brauchen, sollten Sie immer dieser Funktion [str_replace] den Vorzug vor ereg_replace() oder preg_replace() geben.
[cite]
Aber dafür unterstützt str_replace keine regex, oder?
tschüssi
ichen
Hallo ichen.
bemerkenswert. Das sagt auch das Manual:
[cite]
Falls Sie keine ausgefallenen String-Ersetzungen brauchen, sollten Sie immer dieser Funktion [str_replace] den Vorzug vor ereg_replace() oder preg_replace() geben.
[cite]
Ja. Aber manche glauben nur nackten Zahlen. ;-)
Aber dafür unterstützt str_replace keine regex, oder?
Nein, das ist ja der Witz an der Sache. Da str_replace einfach nur den ihr übergebenen String abgrast und stupide alles ersetzt, was ihm befohlen wurde, hat diese Funktion den Geschwindigkeitsvorteil.
Komplexere Such(-und Ersetzungs-)muster bedürfen nun einmal auch komplexerer Algorhythmen (preg_*).
Einen schönen Samstag noch.
Gruß, Ashura
moin!
<?php
$pattern = "/(lala|lolo)/";
$return = preg_replace($pattern,$foo,$string);
echo $return;
?>
> hoffe ich konnte helfen.
sieht gut aus. danke!
gruß.
roger.
--
ich widersprech mir immer selber.
aber das passiert mir gott sei dank nie.