joshua
leerzeile wird doppelt gemacht...
- php
0 Julian von Mendel0 Doppelte Leerzeile
Lachgas0 ralphi0 David Tibbe0 Tom0 Andreas Korthaus0 Der Martin0 Tom0 Andreas Korthaus0 Tom
hallo!
ich lasse in einem formular für ein gästebuch die leerzeile (chr(13) bzw. chr(10)) durch ein einfaches '<br />' ersetzen. gebe ich jetzt im formluar folgenden beispiel text ein:
lorem ipsum [return]
dolor sit amet
erzeugt dieser folgende ausgabe
lorem ipsum
dolor sit amet
es wird bei jeder returntaste, das '<br />' verdoppelt...
was habe ich da falsch gemacht?
gruss
joshua
Hallo,
was habe ich da falsch gemacht?
das kann ich dir nicht sagen, wenn du den entsprechenden Code-Abschnitt nicht postest.
Schöne Grüße
Julian
Ⓗⓐⓛⓛⓞ joshua!
(du hast Thema und Name vertauscht!)
ich lasse in einem formular für ein gästebuch die leerzeile (chr(13)
bzw. chr(10)) durch ein einfaches '<br />' ersetzen.
Und wie? Wenn du uns ein relevantes Code-Schnipsel verrätst, können wir
sicherlich schnell eine Lösung finden.
℆, ℒacℎgas
Hi joshua
ich denke du musst das eingegebene Return im Textfeld erst wieder herausnehmen bevor du ttttt<br>aaaa generierst. sonst dürftest du ttttt/n/r<br>aaaa haben
ralphi
Hallo joshua,
ich lasse in einem formular für ein gästebuch die leerzeile (chr(13) bzw. chr(10)) durch ein einfaches '<br />' ersetzen.
Vermutlich manuell. Verwende dafür nl2br. Ersetze die Zeichen auch nur bei der Ausgabe, nicht schon beim Speichern.
Vermutlich lagen da die Gründe deiner Probleme, andernfalls musst du wie gesagt mehr verraten.
Grüße
David
Hello,
ich lasse in einem formular für ein gästebuch die leerzeile (chr(13) bzw. chr(10)) durch ein einfaches '<br />' ersetzen. gebe ich jetzt im formluar folgenden beispiel text ein:
lorem ipsum [return]
dolor sit ameterzeugt dieser folgende ausgabe
lorem ipsum
doppeltes <br />
dolor sit amet
es wird bei jeder returntaste, das '<br />' verdoppelt...
Die Browser sollten einen Returntastendruck _einheitlich_ durch ein "\r\n"
bzw eigentlich durch ein 0D 0A (hex) ersetzen, und zwar unabhängig davon, ob sie auf einem MAC OS, einem WinDOS, oder einem *X-System laufen. Wie sie das intern regeln, ist ihnen überlassen, aber für in den übertragenen Daten muss es so aussehen.
Wenn DU nun z.B. mal einen Text, der entweder nur 0D oder nur 0A Zeichen verwendet, in eine Textarea per Vorbelegung schreibst, dann werden diese Zeichen im Browser automatisch wieder zu einem vollständigen 0D 0A Paar ergänzt.
Wenn der Text nun mit dem Request an das Script übertragen wird, musst Du im Script also
1. erst alle 0D 0A tauschen,
2. dann nachschauen, ob noch einzelne 0D vorhanden sind und die tauschen
3. und dann noch nach einzelnen 0A suchen und die auch noch tauschen.
2. und 3. darf eigentlich nicht vorkommen, aber nicht alle Browser halten sich an die Betriebssystem-Unabhängigkeits-Vorschrift.
In Hochsprachen werden die Synonyme "\r" und "\n" häufig nochmals gegen das auf dem jeweiligen OS gültige Zeilenendezeichen getauscht. So wird vom Compiler einer Hochsprache X das "\n" auf einem MAC z.B. durch ein 0Dh ersetzt, auf einem *X aber durch 0Ah.
Da man sich darauf aber nicht verlassen kann, benutzt man für die Ersetzungsregel nicht die Synonyme, sondern den numerischen Code. In PHP wird diese Ersetzung allerdings nicht OS-Abhängig vorgenommen, sondern ein "\n" immer durch 0Ah und ein "\r" immer durch 0Dh ersetzt.
Nimm aber trotzdem die numerischen Codes ;-))
str_replace(array(chr(13).chr(10),chr(13),chr(10)),"<br />",$text);
müsste Deinen Ansprüchen gerecht werden.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi Tom!
str_replace(array(chr(13).chr(10),chr(13),chr(10)),"<br />",$text);
müsste Deinen Ansprüchen gerecht werden.
nl2br() kümmert sich automatisch um die Problematik:
http://cvs.php.net/co.php/php-src/ext/standard/string.c?r=1.420.2.6#3706
Grüße
Andreas
Hello,
str_replace(array(chr(13).chr(10),chr(13),chr(10)),"<br />",$text);
müsste Deinen Ansprüchen gerecht werden.
nl2br() kümmert sich automatisch um die Problematik:
http://cvs.php.net/co.php/php-src/ext/standard/string.c?r=1.420.2.6#3706
Aber nl2br() ersetzt die Zeilenschaltungszeichen nicht, sondern ergänzt sie.
Wenn man sie denn ersetzen will, weil der Eintrag z.B. anschließend als eine Zeile (Datensatz) in ein Flat-File soll, hilt nl2br() nicht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hi!
Aber nl2br() ersetzt die Zeilenschaltungszeichen nicht, sondern ergänzt sie.
stimmt.
Wenn man sie denn ersetzen will, weil der Eintrag z.B. anschließend als eine Zeile (Datensatz) in ein Flat-File soll, hilt nl2br() nicht.
Ich persönlich würde keine HTML-Tags beim Speichern der Daten verwenden, sondern bei der Ausgabe.
Grüße
Andreas
Hello,
Wenn man sie denn ersetzen will, weil der Eintrag z.B. anschließend als eine Zeile (Datensatz) in ein Flat-File soll, hilt nl2br() nicht.
Ich persönlich würde keine HTML-Tags beim Speichern der Daten verwenden, sondern bei der Ausgabe.
Ich auch.
Aber hier handelt es ich sicherlich erstmal um ein Beispiel - oder?
Durch welches Zeichen/Zeichensequenz man also die Newlines ersetzt, damit sie für die Datei nicht schädlich werden können, kann man sich dann noch überlegen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom