Zeilenumbruch per Enter-Taste übernehmen
chris
- html
Guten Morgen zusammen.
Ich habe folgendes Problem:
Ich lasse die Eingaben die ein Benutzer in ein <textarea>-Feld tätigt, in meine Datenbank speichern. Allerdings werden dabei Zeilenumbrüche nicht übernommen.
Aus bekannten Webanwendungen ist man es aber gewohnt, mit einem Druck auf die Enter-Taste in die nächste Zeile zu wechseln - und dass das Script sich das auch merkt.
Allerdings fehlt mir jeglicher Anhaltspunkt in wie fern ich mein Script/Textarea/die Eingaben verändern/aufbereiten oder überarbeiten müsste um diese Wirkung zu erzielen.
Vielen Dank mal wieder an euch,
Chris
Hi!
Was heissty, die Zeilenumbruche werden nicht uebernommen? Dann musst Du ja irgendwas angestellt haben um das zu erreichen.
Ich glaube allerdings Du unterliegst nur einem kleinen Irrtum. Wenn Du eine Eingabe mit Zeilenumbruechen ausgibst, und Dir den Quelltext anschaust: Sind die Umbruche dann da? HTML stellt Whitespaces maximal als ein einzelnes Leerzeichen dar.
"Hallo Welt",
"Hallo Welt" und
"Hallo
Welt"
werden alle gleich dargestellt.
Du muesstest gegebenenfalls also dafuer sorgen den ausgegebenen Text mit den entsprechenden HTML-Tags zu versehen. PHP stellt hierfuer z.B. Funktionen bereit.
Hi!
Was heissty, die Zeilenumbruche werden nicht uebernommen? Dann musst Du ja irgendwas angestellt haben um das zu erreichen.
Ok, also mal ein paar Rahmeninformationen:
Die Eingaben ins Textfeld werden in der Datenbank in einem BLOB-Feld gespeichert.
Das textfeld ist ein ganz normal, standard-konformes textarea.
Ich glaube allerdings Du unterliegst nur einem kleinen Irrtum. Wenn Du eine Eingabe mit Zeilenumbruechen ausgibst, und Dir den Quelltext anschaust: Sind die Umbruche dann da? HTML stellt Whitespaces maximal als ein einzelnes Leerzeichen dar.
"Hallo Welt",
"Hallo Welt" und
"Hallo
Welt"
werden alle gleich dargestellt.
<td colspan="2">
1 zeile
2 zeilen
3 zeilen
4 zeilen
5 zeilen
</td>
Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.
Du muesstest gegebenenfalls also dafuer sorgen den ausgegebenen Text mit den entsprechenden HTML-Tags zu versehen. PHP stellt hierfuer z.B. Funktionen bereit.
Wie heißt eine solche Funktion?!
Hi,
Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.
das ist auch nicht seine Aufgabe, sondern Deine. Wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren - die Kodierung eines Zeilenumbruches im XHTML-Kontext lautet <br/>.
Wie heißt eine solche Funktion?!
"Neue Zeile zu <br/>", nur auf englisch. Da es um String-Bearbeitung geht, möchtest Du bei den String-Funktionen nachsehen.
Cheatah
Hi,
Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.
das ist auch nicht seine Aufgabe, sondern Deine. Wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren - die Kodierung eines Zeilenumbruches im XHTML-Kontext lautet <br/>.
Tut mir leid, aber da muss ich widersprechen:
C.2. Empty Elements
Include a space before the trailing / and > of empty elements, e.g. <br />, <hr /> and <img src="karen.jpg" alt="Karen" />. Also, use the minimized tag syntax for empty elements, e.g. <br />, as the alternative syntax <br></br> allowed by XML gives uncertain results in many existing user agents.
Quelle: http://www.w3.org/TR/xhtml1/
Wie heißt eine solche Funktion?!
"Neue Zeile zu <br/>", nur auf englisch. Da es um String-Bearbeitung geht, möchtest Du bei den String-Funktionen nachsehen.
Danke für den Hinweis, werde gleich nachschauen!
Hi,
Tut mir leid, aber da muss ich widersprechen:
C.2. Empty Elements
das sind Empfehlungen, die der Kompatibilität zu nicht-XHTML-fähigen, älteren Browsern dienen - bzw. zu großen Teilen dienten. Das Leerzeichen ist optional, wie Du der Deklaration in http://www.w3.org/TR/REC-xml/#dt-empty entnehmen kannst. Wenn es Dir aber nur darum geht: Füge es meinen vorherigen Ausführungen hinzu, dann hatten sie auch im Jahre 2000 schon Gültigkeit.
Cheatah
Hi,
Tut mir leid, aber da muss ich widersprechen:
C.2. Empty Elementsdas sind Empfehlungen, die der Kompatibilität zu nicht-XHTML-fähigen, älteren Browsern dienen - bzw. zu großen Teilen dienten. Das Leerzeichen ist optional, wie Du der Deklaration in http://www.w3.org/TR/REC-xml/#dt-empty entnehmen kannst. Wenn es Dir aber nur darum geht: Füge es meinen vorherigen Ausführungen hinzu, dann hatten sie auch im Jahre 2000 schon Gültigkeit.
Cheatah
»»
Ja hast Recht :)
Aber Kompatibilität ist schon wünschenswert auch wenn der Anteil veralteter Browser verschwindend gering ist.
Siehe dazu:
4.6. Empty Elements
Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>. See HTML Compatibility Guidelines for information on ways to ensure this is backward compatible with HTML 4 user agents.
CORRECT: terminated empty elements
<br/><hr/>
Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.
Alle meine Versuche <br> gegen <br /> zu ersetzen scheitern leieder, der einfach Einsatz von str_replace funktioniert, aber wenn ich als Parameter "<br>" angebe und duch "<br />" ersetzen lassen will, verweigert die Funktion den Dienst.
Dabei ist es egal ob ich " verwende oder einfache '.
Leider steht mir nur php5.2.9 zur Verfügung, sonst würde ich den Parameter is_xhtml verwenden.
Hier mein Code:
$content = nl2br($_POST["content"]);
$rpl_content = str_replace("<br>", "<br />", $content);
Hallo
Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.
Solange ich mit PHP und der Funktion nl2br arbeite, ersetzt diese Funktion die Xeilenumbrüche XHTML-konform, also als <br />
. Der neue Parameter scheint eher für die HTML-Liebhaber gedacht zu sein.
$content = nl2br($_POST["content"]);
Genau das sollte nach meiner Erfahrung reichen.
Tschö, Auge
Hallo
Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.
Solange ich mit PHP und der Funktion nl2br arbeite, ersetzt diese Funktion die Xeilenumbrüche XHTML-konform, also als
<br />
. Der neue Parameter scheint eher für die HTML-Liebhaber gedacht zu sein.
$content = nl2br($_POST["content"]);
Genau das sollte nach meiner Erfahrung reichen.
Tschö, Auge
Tut es auch, aus irgendeinem Grund weicht die Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen) des Firefox von der normalen Quelltextansicht ab... :/
Fehlersuche also umsonst, Funktion arbeitete direkt korrekt.
Hi,
aus irgendeinem Grund weicht die Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen) des Firefox von der normalen Quelltextansicht ab... :/
ja, in diesem Fall zeigt dir der Firefox nicht den "rohen" vom Server empfangenen Quellcode, sondern das, was er daraus interpretiert hat.
Ciao,
Martin
Hi,
Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen)
das ist die String-Repräsentation der aus dem Quelltext erzeugten DOM-Objekte. Eine doppelte Interpretation, wo die Maximalzahl der erlaubten Interpretationen null beträgt.
Cheatah
Hi!
Dabei ist es egal ob ich " verwende oder einfache '.
Leider steht mir nur php5.2.9 zur Verfügung, sonst würde ich den Parameter is_xhtml verwenden.Hier mein Code:
$content = nl2br($_POST["content"]);
$rpl_content = str_replace("<br>", "<br />", $content);
Mangels gerade verfuegbarem php bin ich mal wieder etwas vage:
Sollte nicht seit Version 4.0.5 xhtml unterstuetzt werden? echo nltbr("/n") also <br /> ergeben?
Hast Du bei Deinem Experiment den slash mal escaped, als "<br //>" versucht?
--
"Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
- T. Pratchett
Hi,
Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein.
Wo von reden wir jetzt, nl2br?
Laut Manual liefert die schon seit PHP 4.0.5 <br />.
MfG ChrisB
Hi,
Aber Kompatibilität ist schon wünschenswert auch wenn der Anteil veralteter Browser verschwindend gering ist.
sicher doch. Aber schon vor Jahren konnten mir Fachleute, die die gleiche These vertraten, nicht mal mehr sagen, welche Clients davon betroffen sein könnten. Ich behaupte: 0 < verschwindend gering. Wer heute einen solchen (ominösen) Client einsetzt, der tut es in dem Wissen, dass er zu den aktuellen Begebenheiten nicht mehr kompatibel ist - und wahrscheinlich um genau diesen Umstand zu testen.
Cheatah
Hi,
Tut mir leid, aber da muss ich widersprechen:
Nein, musst du nicht.
Zu Anfang des Threads wusstest du noch nicht genug über HTML, um dir darüber im Klaren zu sein, dass einfache Zeilenumbrüche im Normalfalle nur als (kondensierter) Whitespace dargestellt werden und keinen Umbruch in der Anzeige auslösen, und hast sogar angenommen/behauptet, sie würden nicht in die Datenbank übernommen ...
MfG ChrisB