Tom: nl2br() vs. str_replace()

Beitrag lesen

Hello,

... und ausserdem ist "str_replace" auf Grund seiner "Eigenart" im bereits Ersetztem zu ersetzen grundsätzlich dafür ungeeigent.

Das dürfte hier sinngemäß zutreffen.
str_(i)replace führt die Ersetzungen des Search-Arrays sauber nacheinader durch. Es nimmt also den Originaltext und ersetzt das Gesuchte, nimmt diesen Ergebnistext un ersetzt das nächste gesuchte Element.

Wenn man nun Elemente einsetzt, die in nachfolgenden Elementen des Such-Arrays noch auftreten, dann werden die logischerweise auch wieder ersetzt.

Da hier erst ein "\r\n" gesucht wird, das orendlicherweise durch ein "<br>\r\n" ersetzt werden muss,  oder bei xhtml durch ein "<br />\r\n", kann man anschließend nicht noch nach einem losen "\r" oder einem "\n" suchen, das würde dann nämlich auch die Vorkommen von "<br>\r\n" finden und betreffen.

Man müsste also z.B.

$text = str_replace(array("\r\n","\r","\n"), chr(30));
  $text = str_replace(chr(30), "<br>\r\n");
oder
  $text = str_replace(chr(30), "<br />\r\n");

schreiben, um das Gewünschte zu erreichen.
Vorher müsste der Ordnung halber noch geprüft werden, dass chr(30) (RS = Record Separator) im Text noch nicht erhalten ist.

Es kann selbstverständlich auch ein anderes Zwischenzeichen verwendet werden...

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de