Zeilenumbruch von Formulardaten ?
drfoehn
- html
Ich habe folgendes Problem:
Ich habe ein kleines feines PHP-Gästebuch geschrieben das eigentlich tadellos rennt. Es ist Taxtdatei- und nicht Datenbank-gestützt.
Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.
Also nicht die Wrap-Funktionen sondern bei der Ausgabe ist ein Fehler.
Kennt sich da wer aus ?
Vielleicht ist es ja ein PHP Problem, aber ich glaub eher nicht.
THX im Voraus
Janne
Hallo,
Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.
Klar, denn in einem Textfeld besteht der Umbruch aus dem Steuerzeichen "\n" (n für new line oder so), welches in der Textdatei, in der es gespeichert wird, eine neue Zeile beginnt. Dem Browser ist das ziemlich wurscht; eine neue Zeile wird von ihm nicht dargestellt. Du musst schon beim Abschicken des Formulars in deinem Skript alle "\n" Zeichen durch das Umbruchzeichen "<br />" ersetzen - am einfachsten geht das mit der Funktion str_replace (siehe http://www.php.net/manual/de/function.str-replace.php).
Damit sollte das Problem behoben sein.
Grüße aus Darmstadt,
Benjamin
Hallo
Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.
Kleine Ergänzung zur Empfehlung von Benjamin
nl2br()
http://www.php.net/manual/de/function.nl2br.php
Gruss,
Vinzenz
Hallo Vinzenz,
Klar, das ist natürlich noch besser...
An die Funktion habe ich im Moment überhaupt nicht gedacht... :-)
Grüße aus Darmstadt,
Benjamin
Hallo Benjamin,
Klar, das ist natürlich noch besser...
An die Funktion habe ich im Moment überhaupt nicht
gedacht... :-)
Leider eignen sich weder str_replace(), noch nl2br() dazu, die
Newlines korrekt umzusetzen. Korrekt waere ein RegEx-Replace
wie
$txt = preg_replace('!\015\012|\015|\012!','<br/>',$txt);
Warum? Nun, ganz einfach: es ist nicht garantiert, dass die
Newline-Zeichen als \n vorliegen. \n kann, je nach Plattform,
\015\012, \012 oder \015 sein. Was vom Client kommt, ist
nicht vorhersehbar.
Gruesse,
CK
Hallo Christian,
hab' ich mal wieder zu wenig nachgedacht und nachgelesen bevor gepostet :-(
Leider eignen sich weder str_replace(), noch nl2br() dazu, die
...
$txt = preg_replace('!\015\012|\015|\012!','<br/>',$txt);
...
Warum? Nun, ganz einfach: es ist nicht garantiert, dass die
Newline-Zeichen als \n vorliegen. \n kann, je nach Plattform,
\015\012, \012 oder \015 sein. Was vom Client kommt, ist
nicht vorhersehbar.
Hm, Du hast recht ;-)
Die Newline-Problematik der verschiedenen OS hatte ich völlig vergessen. Außerdem hätte ich die Anmerkungen im Anschluss an die Funktionsbeschreibung lesen sollen, da gibt es doch eine von
CK1 at wwwtech dot de
02-Feb-2001 06:07
die sieht so verdächtig ähnlich aus
Gruss,
Vinzenz
Hallo Vinzenz,
Außerdem hätte ich die Anmerkungen im Anschluss an die
Funktionsbeschreibung lesen sollen, da gibt es doch eine vonCK1 at wwwtech dot de
02-Feb-2001 06:07die sieht so verdächtig ähnlich aus
Mich wundert irgendwie, dass die noch nicht wegmoderiert
wurde...
Gruesse,
CK
Hallo Dr. Foehn,
in HTML wird ein Zeilenumbruch im Normalfall nicht als solcher interpretiert, da hierfür das Steuerzeichen <br> vorgesehen ist. Wenn in Deiner Textdatei Zeilenumbrüche enthalten sind, die Du anzeigen möchtest, mußt Du diese in <br> umwandeln, um im Browser das gewünschte Ergebnis zu erhalten.
Gruß
Eidgenosse