"nl2br" umkehren?

Das selbe Problem hab ich bis heute Nachmittag mehrfach erleutert, bzw. nachgefragt. Suche nutzen ;).

Du nimmst einfach wie gehabt nl2br() um deinen Text um zu wandeln.
edit: Was du vielleicht auch machen solltest, was bei mir den eigentlichen Fehler verursacht hat, auch hier nochmal den zu formatierenden String durch str_replace() laufen lassen und dabei "\r" in "" umwandeln.

Um den Text dann wieder zurück zu formatieren, nimmst du folgendes kleines Script:

PHP:
<?php
$text=str_replace("<br>", "\n", $text);
$text=str_replace("\\l", "", $text);
$text=str_replace("\r", "", $text);

//Was mit Text gemeint ist, liegt ja wohl auf der Hand.
?>

Also bei mir dieses kleine Script wunderbar. Ich habe es für ein Gästebuch benötigt, um alles fein in einer Textdatei in eine Zeile zu schreiben. Es klappt wie gesagt wunderbar. Probier es aus!
 
Zuletzt bearbeitet:
Ob dein Skript so tadellos ist, möchte ich bezweifeln, da nl2br() ab PHP 4.0.5 XHTML konform ist, und somit <br /> vor Zeilenumbrüche einfügt. Dein Skript behandelt jedoch nur den HTML-Zeilenumbruch.
 
Da baust du halt noch str_replace("<br />", "\n", $text) ein.

Bei mir hat es gefunzt und davon bin ich ausgegangen.
 
es ist sehr leicht erklärt, warum nl2br die zeilenumbrüche verdoppelt:
man braucht zwei <br /> - tags um EINEN zeilenumbruch darzustellen.

Des Problems Lösung:
Wende nl2br erst bei der Ausgabe aus der DB an. Dann stehen in der DB die normalen "newlines", und im Textfeld werden sie auch nicht verdoppelt. D.h. Es ist keine Umkehrfunktion nötig.
 
&nbsp;&nbsp;&nbsp;&bdquo;Der Begriff Zeilenumbruch stammt aus dem Schriftsatz und gibt an, an welcher Stelle ein Text von einer Zeile in die nächste übergehen soll.&rdquo;
&nbsp;&nbsp;&nbsp;&mdash; Zeilenumbruch - Wikipedia

Wenn ich mich nicht irre, fungiert <br /> als nichts anderes.
 
Das Problem mit der Verdoppelung liegt an der Function nl2br

Die ersetzt nicht das \n Zeichen sondern fügt ein <br\> vor dem \n ein

wenn nun mit replace aus dem String <br\> ein \n machst dann haste ja zwei \n hintereinander
 
Zurück