PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JavaScript] nl2br mit replace(), allerdings nicht nach HTML-Tags


Lumi
2006-03-21, 08:26:43
Hallo!

Habe ein (für mich) kniffliges Problem.

Ich möchte gerne einen Text aus einer Textarea im Browser mit der JavaScript-Funktion replace() so abändern das alle Zeilenumbrüche (\n) in <br />'s umgewandelt werden.
Allerdings sollen nur \n's in <br />'s umgewandelt werden, wenn das \n nicht unmittelbar auf irgendeine Art von HTML-Tag folgt.

Ganz kurz: Wenn im Text ">\n" dann kein <br />, wenn im Text "\n" ohne ">" davor, dann ein <br /> setzen.

Wie man \n's zu <br />'s "konvertiert" habe ich schon rausbekommen - allerdings nicht wie man die \n's die unmittelbar nach HTML-Tags kommen ausschließt:

text = text.replace(/\n/g, '<br />');

Bin auf dem Gebiet der "RegExp" noch ein ziemlicher Neuling und danke euch schon mal für die Hilfe...

Lumi

Marscel
2006-03-21, 14:20:08
Ich weiß nun nicht, was du vorhast, aber eigentlich würde ich die <br />s nicht in der Textarea setzen, sondern erst bei der Ausgabe (d.h., wenn das Eingegebene irgendwo zum Vorschein kommen soll), sofern das möglich ist, z.B. durch PHP o.Ä.

The_Invisible
2006-03-23, 07:47:42
das sollte funzen:

text = text.replace(/[^>]\n/g, '<br />');

mfg

Gast
2006-03-24, 22:20:59
HTML-Tags können auch mit /> enden ;)

ich.com.sie.net
2006-03-27, 08:25:44
Also ich hab des mit PHP gelöst, ist meiner meinung nach einfacher...

$text = $form_text;
$search = array("\r\n");
$replace = array('<br />');

Gast
2006-03-27, 15:29:11
$text = $form_text;
$search = array("\r\n");
$replace = array('<br />');
Wer sagt, das ein Zeilenumbruch immer mit \r\n erfolgt?

The_Invisible
2006-03-28, 19:58:39
HTML-Tags können auch mit /> enden ;)

jetzt zufrieden:

text = text.replace(/[^>|^(\/>)]\n/g, '<br />');

mfg