phpbar.de logo

Mailinglisten-Archive

AW: [php] WG: Linefeed mit br ersetzen

AW: [php] WG: Linefeed mit br ersetzen

Gloss Mathias Mathias.Gloss at start.de
Die Okt 21 19:06:43 CEST 2003


> * Thomas Langfeld wrote:
> > Und wenn ich die Wahl habe zwischen einem 3-Zeiler, der vielleicht im
> > Hinteren-Nachkomma-Tausendstel-Mili-Sekunden-Bereich schneller ist und
> einem
> > Einzeiler, um ein Problem zu lösen, brauche ich wirklich nicht lange zu
> > überlegen ...
> 
> Es ist ineffizient, einen regulären Ausdruck zu verwenden, wenn
> gar keiner nötig ist; genau so wie es nicht nötig ist, 3x str_replace()
> zu verwenden, da folgendes bereits ausreichend ist:
> $txt = str_replace(array('\r\n','\r','\n'),'<br>',$txt);
> 
naja mir ist eine Zeile Code auch lieber, als 3 Zeilen. Die
Frage ist halt, was wie lange braucht und ob es eine Rolle
spielt:

C:\prog\php_rfc\sap_mitarbeiter_emailadressen\test>test.php
Test 1 (3 x str_replace) 16.0978940725326538 Sekunden
Test 2 (str_replace mit Array) 13.9548659324645996 Sekunden
Test 3 (preg_replace) 63.1338710784912109 Sekunden

Die Testdatei:
13.03.2002  15:23           69.965.031 test.txt

Programm:
<?
function getmicrotime(){
  list($usec, $sec) = explode(" ",microtime());
  return ((float)$usec + (float)$sec);
}

$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
  $b = fgets($f, 4096);
  $b = str_replace ("\r\n", "\n"  , $b);
  $b = str_replace ("\r"  , "\n"  , $b);
  $b = str_replace ("\n"  , '<br>', $b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 1 (3 x str_replace) ' . $time . ' Sekunden'."\n";

$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
  $b = fgets($f, 4096);
  $b = str_replace(array('\r\n','\r','\n'),'<br>',$b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 2 (str_replace mit Array) ' . $time . ' Sekunden'."\n";

$time_start = getmicrotime();
$f = fopen('test.txt','r');
while (!feof($f)) {
  $b = fgets($f, 4096);
  $b = preg_replace('/\r\n|\r|\n/', '<br>', $b);
}
fclose($f);
$time_end = getmicrotime();
$time = sprintf('%.16f', $time_end - $time_start);
echo 'Test 3 (preg_replace) ' . $time . ' Sekunden'."\n";
?>

So, jetzt kann jeder selbst entscheiden was die beste
Lösung ist, ich denke 3 x str_replace ist doch besser ;-)

Grüße, Mathias


php::bar PHP Wiki   -   Listenarchive