moni: Wo sind die Zeilenumbrüche??

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

  1. 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.

    1. 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

      1. 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.

  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

  3. 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