2012-03-31 17 views
1

Ich schreibe ein Formular mit PHP Das Formular hat einen Textbereich und die Daten werden an das Skript gesendet mit $_POST; dann in db gespeichert. Das Problem ist, wenn das Textfeld ausgefüllt ist und wenn der Benutzer nicht drücken Sie die Eingabetaste, um einen neuen Zeilenumbruch, aber er bis zum Ende der Breite des Textfelds der Text in der Datenbank gespeichert ist alle in einer Zeile, zum Beispiel wenn er wrotes:Zeilenumbruch im Textbereich

HALLO DIES IST TEXT UND ES GILT fÜR ALLE Die Breite der TE < = Ende der Textbox (kein br keine/n) XTAREA.

Dies auch wenn wenn Sie die maximale Breite der Textbox erreichen der Text in einer neuen Zeile. wenn ich drucken Sie die Nachricht mit einer Abfrage das Ergebnis alles in einer Zeile ist (die meine Site-Layout vermasseln)

ich Rekord Benutzer haben es geschafft, Striche ENTER durch diesen Code verwenden:

$cleaned_message=str_replace(Chr(13),'<br>', $cleaned_message); 

Aber ich kann nicht herausfinden, was zu tun ist, wenn er nicht ENTER-Taste verwendet.

Antwort

1

Was Sie im ersten Teil Ihres Posts beschreiben, ist ein normales und korrektes Verhalten. Text wird in den Textbereich eingepackt und solange der Benutzer nicht auf Enter klickt, wird er als eine Zeile interpretiert. Es ist der Benutzer anzugeben, wo er eine neue Zeile haben möchte, nicht das Textfeld.

Was ist kaputt ist wahrscheinlich Ihr Layout. Versuchen Sie, die Breite des Ausgabeelements zu definieren (ich nehme an, das ist auch ein Textfeld), so dass die Ausgabe in das Element und nicht das Element, das an die Ausgabe angepasst ist, eingebunden wird.

Können Sie Ihren Beitrag mit einem Teil des Layouts aktualisieren, in dem das Ergebnis gedruckt wird?

+0

behoben mit css danke. – user1084304

1

Wenn der Benutzer nicht die Eingabetaste verwendet (und Zeilenumbrüche nicht auf andere Weise einfügt, z. B. durch Kopieren und Einfügen von Text mit Zeilenumbrüchen), werden in den Daten keine echten Zeilenumbrüche wie im DOM gespeichert und wie in den Formulardaten eingereicht. Browser teilen den Text nach Bedarf in mehrere Zeilen auf, um sie anzupassen, aber die Zeilenumbrüche sind "weich", nur visuelles Rendering.

Die vom Benutzer eingegebenen Zeilenumbrüche werden als CR-, LF-Paare (Wagenrücklauf, Zeilenvorschub) übertragen. In der Standardform der Datencodierung bedeutet dies %0D%0A. Was Sie damit machen, hängt vom Kontext ab. Zeilenumbrüche können beibehalten und als Absatzunterbrechungen oder als inhaltsbedeutende Zeilenumbrüche interpretiert werden (z. B. in Postanschriften, Gedichten und Computercode), oder sie können durch Leerzeichen ersetzt werden.

Es gibt keine Möglichkeit und keine Notwendigkeit, mit browsergenerierten Zeilenumbrüchen serverseitig umzugehen, da sie den Server nicht erreichen.

Wenn jedoch das Element textarea das (nicht standardmäßige) Attribut wrap=hard aufweist, werden die vom Browser generierten Zeilenumbrüche zu echten Zeilenumbrüchen (und sie sind von den eingegebenen Zeilenumbrüchen nicht zu unterscheiden). Das Attribut wrap=off verhindert das automatische Umbrechen: Eine Zeile kann beliebig lang sein, und horizontales Scrollen erscheint nach Bedarf.

+0

danke. korrigiert mit physical plus css job. – user1084304

Verwandte Themen