Zeilenumbrüche
HIM
- php
0 Thomas Luethi0 HIM0 Thomas Luethi0 HIM
0 Tom0 Thomas Luethi0 wahsaga
0 e70 Tom
Hallo Zusammen
Ich habe eine kleine Frage:
Ich schreibe über ein Formular Daten in eine Datenbank. Die Zeilenumbrüche in einem Textfeld, die ich bei der Eingabe im Formular gemacht habe, werden aber bei einer Ausgabe der Daten nicht berücksichtigt. Wie schaffe ich es, dass diese Zeilenumbrüche auch bei der Ausgabe (bspw. auf einer anderen Seite) berücksichtigt werden? Gibt es da einen bestimmten Trick bei der Erfassung resp. beim Code für die Ausgabe?
Danke für Eure Hilfe.
Gruss
HIM
Hallo,
Die Zeilenumbrüche in einem Textfeld, die ich bei der Eingabe im Formular gemacht habe, werden aber bei einer Ausgabe der Daten nicht berücksichtigt.
Werden sie vermutlich doch.
Guck mal in den HTML-Quelltext.
Du brauchst vermutlich nl2br()
http://www.php.net/manual/de/function.nl2br.php
Ansonsten:
http://www.tiptom.ch/homepage/faq.html?q=zeilenumbruch
Gruesse,
Thomas
Hallo Thomas
Danke für deinen Hint.......aber ich check das nicht ganz.....*schäm*
Kannst Du mir ein kleines Beispiel vom Code machen?
HIM
Hallo,
Danke für deinen Hint.......aber ich check das nicht ganz.....*schäm*
Kannst Du mir ein kleines Beispiel vom Code machen?
Benutzereingabe:
Zeile 1
Zeile 2
Wird per Formular -> Skript -> Datenbank gespeichert als:
Zeile 1\nZeile 2
Bei der Ausgabe steht nun im HTML-Quelltext:
Zeile 1
Zeile 2
Weil Zeilenumbrueche im HTML-Quelltext aber nicht
angezeigt werden (ausser zwischen <pre> und </pre>),
wird dem Benutzer angezeigt:
Zeile 1 Zeile 2
Wenn Du statt
print($variable);
schreibst:
print(nl2br($variable));
dann steht im HTML-Quelltext:
Zeile 1<br />
Zeile 2
Und folgendes wird angezeigt:
Zeile 1
Zeile 2
Hoffe, jetzt ist es klar;-)
Gruesse,
Thomas
Danke Dir!
Jetzt, glaube ich, habe ich's gerafft!
HIM
Hello,
die erzwungenen Zeilenumbrüche in einem Textfeld (Textarea) werden als \r\n (Windows) im Textstream gespeichert (wrap=soft ...)
Vor dem Abspeichern in der MySQL-Datenbank sollte man sie mit mysql_escape_string() maskieren.
Beim Wiederholen der Daten fällt die Maskierung automatisch fort (da sie in Wirklichkeit gar nicht abgespeichert wird, sondern nur für die Schnittstelle gedacht ist)
Gibt man diese Daten nun in einem Textfeld wieder aus, sollte man sie vorher auf jeden Fall mit htmlentities() oder wenigstens htmlspecialchars() behandeln. Die Zeilenumbrüche werden auch wieder dargestellt.
Stellt man die selben Daten nun im normalen HTML-Text dar, muss das für den Umbruch notwendige <br /> hinzugefügt werden. Das erfolgt z.B. durch die Funktion nl2br(). Die \r\n Zeichen werden dabei nicht entfernt, sondern durch ein nachfolgendes <br> (leider noch nicht <br />) ergänzt.
Die Reeihenfolge der Funktionen nl2br() und htmlentities() sollte daher auch klar sein: erst die html-Sonderzeichen ersetzen, dann das break einsstanzen:
$ausgabe = nl2br(htmlentities($datenbankwert));
Grüße
Tom
Hallo,
[ Eroerterungen zu nl2br() ]
<br> (leider noch nicht <br />)
Doch, bereits seit PHP 4.0.5 schreibt es eben "leider" [1] <br />,
ob man will oder nicht:
http://www.php.net/manual/de/function.nl2br.php
Gruesse,
Thomas
[1] AFAIK ist <br /> in HTML 4.01 _falsch_.
hi,
[1] AFAIK ist <br /> in HTML 4.01 _falsch_.
zumindest bei 4.01 transitional geht es ohne beanstandung durch den validator.
gruss,
wahsaga
Hi,
sondern durch ein nachfolgendes <br> (leider noch nicht <br />) ergänzt.
bei mir schon, und das ist eine relativ alte Version von PHP (die genaue Nummer kenn ich nicht auswendig), aber ein Update sollte das behebn
E7
Hello,
sondern durch ein nachfolgendes <br> (leider noch nicht <br />) ergänzt.
bei mir schon, und das ist eine relativ alte Version von PHP (die genaue Nummer kenn ich nicht auswendig), aber ein Update sollte das behebn
Na, kann sich ja jeder mal irren. Jedenfalls schön, dass wir drüber gesprochen haben *grins*
Grüße
Tom