Wo sind die Zeilenumbrüche??
moni
- php
Liebe alle
Habe ein kleines Formular erstellt. Der Inhalt des Eingabefeldes "Textbereich" wandert wunderbar in die Datenbank. Dabei bleiben die Zeilenumbrüche auch bestehen.
Nur, beim Auslesen gehen diese alle verloren.
Ich lese den Inhalt der Feldes "inhalt" aus und entferne mit folgendem Code Stripslashes:
$inhalt = preg_replace('/\r\n|\r|\n/', "\n", $inhalt);
Lasse ich diesen Code weg, ändert sich nichts.
Wie Ihr unschwer erkennen könnt, habe ich in Sachen PHP keine grosse Ahnung. Darum meine Frage an Euch: Gehe ich das Problem falsch an?
Wenn ja: Was wäre der Lösungsansatz?
Liebe Grüsse
die verzweifelte Moni
Hi moni,
Ich lese den Inhalt der Feldes "inhalt" aus und entferne mit folgendem Code Stripslashes:
$inhalt = preg_replace('/\r\n|\r|\n/', "\n", $inhalt);
Lasse ich diesen Code weg, ändert sich nichts.
Probiere mal das \r\n|\r|\n noch in Klammern zu setzen (einfache Klammern, so wie diese) - geht es auch dann noch nicht, so verwende statt den Hochkommas (') Anführungszeichen ("), spätestens dann sollte es gehen.
MfG, Dennis.
Hi Dennis!
Probiere mal das \r\n|\r|\n noch in Klammern zu setzen (einfache Klammern, so wie diese) - geht es auch dann noch nicht, so verwende statt den Hochkommas (') Anführungszeichen ("), spätestens dann sollte es gehen.
Funktioniert leider nicht! ;O(
Trotzdem vielen Dank für Deine Hilfe
Liebe Grüsse
Moni
Hi moni,
Funktioniert leider nicht! ;O(
Und du hast beide von mir vorgeschlagenen Möglichkeiten ausprobiert? Also zuerst das klammern und dann auch noch doppelte Anführungszeichen statt einfachen verwendet?
Dann muss der Fehler wohl schon beim Abspeichern passiert sein - was macht dich so sicher, dass du sagst die Texte wären wirklich alle korrekt in die Datenbank gelangt? Wie hast du geprüft, ob die Zeilenumbrüche wirklich in der DB gespeichert sind?
Und der Vollständigkeit halber: Warum willst du überhaupt \r\n bzw. \r zu \n ersetzen? In Normalfall macht es eigentlich keinen wirklichen Unterschied, ob man irgendwo \r\n oder \n hat - mit Zeilenumbrüchen muss man in der Regel ja auch nicht viel rumexperimentieren. Wenn du die Zeilenumbrüche für die Ausgabe durch ein <br /> ersetzen willst, verwende doch einfach die fertige Funktion nl2br().
MfG, Dennis.
Hello,
Habe ein kleines Formular erstellt. Der Inhalt des Eingabefeldes "Textbereich" wandert wunderbar in die Datenbank. Dabei bleiben die Zeilenumbrüche auch bestehen.
Das sollte nochmal überprüft werden.
Meistens wird hier schon die erste "Verkurbelung" durchgeführt.
Nur, beim Auslesen gehen diese alle verloren.
Ich vermute (aus eigener Erfahrung) eher, dass sie nicht in neutraler Form eingefügt wurden in das Query.
Ich lese den Inhalt der Feldes "inhalt" aus und entferne mit folgendem Code Stripslashes:
Du solltest aber nicht "stripslashes"
http://de3.php.net/manual/de/function.stripslashes.php
entfernen, denn das ist eine Funktion von PHP, die die eingefügten Maskierungen wieder entfernt.
Eingefügt werden sie üblicherweise von PHP automatisch, wenn
magic_quotes_gpc()
http://de3.php.net/manual/de/function.get-magic-quotes-gpc.php
eingeschaltet ist.
Wenn Du die automatischen Maskierungen rekursiv
http://forum.de.selfhtml.org/archiv/2004/1/t68384/#m392313
wieder entfernt hast, dann musst Du sie für die jeweilige Datenbank passend wieder einfügen.
MySQL hat dafür die Funktion
http://de3.php.net/manual/de/function.mysql-real-escape-string.php
Wenn du die Daten dann wieder ausliest aus der Datenbank, sind die Maskierungen wieder verschwunden, denn sie galten der Textschnittstelle der Datenbank. Diese erkennt daran die besondere Bedeutung mancher Zeichen, und trägt daher den resultierenden Raw-Text in die DB ein.
Bei der Ausgabe im HTML muss man dann natürlich die Umbrüche im Raw-Text wieder HTML-konform gestalten und das geht am einfachsten mit nl2br()
http://de3.php.net/manual/de/function.nl2br.php
Wenn ja: Was wäre der Lösungsansatz?
Siehe oben
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Moin moni,
Habe ein kleines Formular erstellt. Der Inhalt des Eingabefeldes "Textbereich" wandert wunderbar in die Datenbank. Dabei bleiben die Zeilenumbrüche auch bestehen.
Nur, beim Auslesen gehen diese alle verloren.
wenig elegant aber funktinierend:
Vor der Wanderung in die Datenbank Umbrüche per str_replace durch bestimmte Zeichenfolge ersetzen, bspw. "***um****". Beim Auslesen der Datenbank die Zeichenfolge wieder durch Umbrüche ersetzen.
$inhalt = preg_replace('/\r\n|\r|\n/', "\n", $inhalt);
Oder auch einfach
$inhalt = str_replace("
", "\n", $inhalt);
bzw.
$inhalt = str_replace('
', "***um***", $inhalt);
Hoffe, geholfen zu haben,
Mike