bei textarea keine Zeilenumbrüche im IE
Matze
- browser
0 Der Martin
0 Matze0 Der Martin
0 Auge
0 Der Martin
0 Matze
Hallo,
ich erstelle mir mit JavaScript eine textarea, diese wird dann mit Daten (Text) aus einer Datenbanktabelle gefüllt.
Leider verschwinden im IE dabei die Zeilenumbrüche.
Der FF, Opera und Safari übernehmen die Zeilenumbrüche.
Wie kann ich dem IE also beibringen die Zeilenumbrüche aus der Datenbank zu übernehmen? nl2br()
scheidet ja aus weil ich damit in der textarea lauter "<br />" stehn habe.
Jemand eine Idee?
Danke und Grüße, Matze
Hi,
ich erstelle mir mit JavaScript eine textarea, diese wird dann mit Daten (Text) aus einer Datenbanktabelle gefüllt.
Leider verschwinden im IE dabei die Zeilenumbrüche.
wie sind die Zeilenumbrüche bei dir dargestellt? Der IE besteht hier auf die Kombination CR,LF (0x0D, 0x0A oder \r\n), während sich die anderen Browser anscheinend auch mit einem LF (\n) alleine zufriedengeben, wie es in der Unix-Welt üblich ist.
Wie kann ich dem IE also beibringen die Zeilenumbrüche aus der Datenbank zu übernehmen?
Indem du jedem LF ein CR voranstellst, wenn noch keins da ist.
nl2br()
scheidet ja aus weil ich damit in der textarea lauter "<br />" stehn habe.
Das ist auch der falsche Kontext. *Innerhalb* einer textarea ist kein HTML.
So long,
Martin
Hallo Martin,
wie sind die Zeilenumbrüche bei dir dargestellt?
keine Ahnung, wie krieg ich das raus?
Wie kann ich dem IE also beibringen die Zeilenumbrüche aus der Datenbank zu übernehmen?
Indem du jedem LF ein CR voranstellst, wenn noch keins da ist.
Kann ich mir dabei sicher sein, dass die anderen Browser in dem Fall nicht 2 Zeilenumbrüche erzeugen?
Und die nächste Frage wäre "wie mach ich das am einfachsten?".
Einfach ereg_replace("\n", "\r\n", $text);
?
Danke und Grüße, Matze
Hallo,
wie sind die Zeilenumbrüche bei dir dargestellt?
keine Ahnung, wie krieg ich das raus?
wieso "rauskriegen"? Das solltest du *wissen*, es ist doch deine Website.
Indem du jedem LF ein CR voranstellst, wenn noch keins da ist.
Kann ich mir dabei sicher sein, dass die anderen Browser in dem Fall nicht 2 Zeilenumbrüche erzeugen?
Probier es mit den gängigen Browsern aus. Theoretisch dürften sie keinen doppelten Umbruch anzeigen, weil die Kombination CR/LF im Web die übliche Form ist (in vielen Kontexten sogar die vorgeschriebene). Es ist eher als Großzügigkeit der Browser zu sehen, wenn sie auch ein einfaches LF korrekt verarbeiten.
Probier insbesondere aus, ob dein Problem mit korrekten \r\n als Umbruch tatsächlich gelöst ist. Wenn nicht, hast du nämlich noch eine ganz andere Baustelle.
Und die nächste Frage wäre "wie mach ich das am einfachsten?".
Einfachereg_replace("\n", "\r\n", $text);
?
Nein.
Erstens schon deshalb nicht, weil die ereg_*-Funktionen inzwischen als "deprecated" gelten, also veraltet und missbilligt, und in zukünftigen PHP-Versionen sogar entfallen werden. Es wird empfohlen, preg_replace stattdessen zu verwenden.
Zweitens nicht, weil dieser Ausdruck jedes LF durch CR/LF ersetzen würde. Aus einem schon bestehenden CR/LF würde also CR/CR/LF - und was die Clients *daraus* machen, wissen die Götter.
Der Suchausdruck muss also sein: Ein Zeichen, das nicht \r ist, gefolgt von einem \n. Dieser Ausdruck soll ersetzt werden durch das gefundene Nicht-\r-Zeichen gefolgt von \r\n.
Ciao,
Martin
Hallo
Und die nächste Frage wäre "wie mach ich das am einfachsten?".
Einfachereg_replace("\n", "\r\n", $text);
?Nein.
Erstens schon deshalb nicht, weil die ereg_*-Funktionen inzwischen als "deprecated" gelten, also veraltet und missbilligt, und in zukünftigen PHP-Versionen sogar entfallen werden. Es wird empfohlen, preg_replace stattdessen zu verwenden.
Zweitens nicht, weil dieser Ausdruck jedes LF durch CR/LF ersetzen würde. Aus einem schon bestehenden CR/LF würde also CR/CR/LF - und was die Clients *daraus* machen, wissen die Götter.
Was hat PHP damit überhaupt zu tun? Dem Eröffnungsposting nach wird der ganze Kram mit JavaScript erstellt. PHP-Funktionen sind hier, vorausgesetzt, Matze hat alle nötigen Informationen rausgerückt, also überhaupt kein Thema.
Tschö, Auge
Hi,
Was hat PHP damit überhaupt zu tun? Dem Eröffnungsposting nach wird der ganze Kram mit JavaScript erstellt. PHP-Funktionen sind hier, vorausgesetzt, Matze hat alle nötigen Informationen rausgerückt, also überhaupt kein Thema.
ähm, ja ... jein. Matze sagt:
ich erstelle mir mit JavaScript eine textarea, diese wird dann mit Daten (Text) aus einer Datenbanktabelle gefüllt.
Ich lese "aus einer Datenbanktabelle" so, dass das Element zwar clientseitig dynamisch erzeugt wird, dann aber durch serverseitige Mechanismen einen Inhalt erhält. Ich hatte da ein AJAX/PHP-Gespann vermutet.
PHP hat Matze selbst ins Spiel gebracht, indem er gleich schon im Eröffnungsposting nl2br() erwähnte, später dann ereg_replace(), und außerdem seine Code-Abschnitte alle als PHP markiert hat.
Kann natürlich auch sein, dass er selbst schon alles durcheinanderbringt, aber davon bin ich zunächst mal nicht ausgegangen.
So long,
Martin
Hallo Martin!
Ich lese "aus einer Datenbanktabelle" so, dass das Element zwar clientseitig dynamisch erzeugt wird, dann aber durch serverseitige Mechanismen einen Inhalt erhält. Ich hatte da ein AJAX/PHP-Gespann vermutet.
Ja, du hattest schon recht.
Ich hab grad noch andere Sachen zu tun, danach versuch ich mich an der entsprechenden RegExp.
Danke nochmals!
Grüße, Matze