Sönke Tesch: preg_replace " mit nichts

Beitrag lesen

$content1 = preg_replace("/[$filter]/si", " ", $content1);

Für einfache Ersetzungsarbeiten sollte besser str_replace() verwendet werden.

$filter= "- . : 0 1 2 3 4 5 6 7 8 9 ( \ [ ] ! ? /) , + # | > = · "  ;

Was ist denn das? Lauter Leerzeichen sehe ich da (eines reicht) und mindestens einen deplazierten Rückstrich.

Der Filter ($filter)umfasst eine Reihe von Zeichen preg_replace
läuft auch schneller (Perl) als str_replace()

Komisch, die PHP-Leute sind da offensichtlich anderer Meinung:

"If you don't need fancy replacing rules, you should always use
   this function instead of ereg_replace() or preg_replace()."
   http://www.php.net/manual/en/function.str-replace.php

Täte mich wundern, wenn es schneller sein sollte, erst ein Muster einlesen und verwursten zu müssen als wenn man gleich stur ein Feld Zeichen für Zeichen runterrattern kann.

Es ist mir auch etwas schleierhaft wie Du darauf kommst, daß PHP überhaupt etwas mit Perl zu tun haben könnte (mal abgesehen davon, daß die Funktionweise der Muster gleich ist) und "Perl" automatisch "schnell" bedeutet.

Also, sowohl (Filter etwas abgekürzt)

$filter=Array(".",""");
  str_replace($filter," ",$text);

als auch

$filter="."";
  $text=preg_replace("/[".$filter."]/si"," ",$text);

machen aus

Ein Test mit "Tütelchen" und Punkt.

die Zeile

Ein Test mit  Tütelchen  und Punkt

Gruß,
  soenk.e