textarea Zeilenumbrüche

  • 0 x
    76 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2008, 13:51

    Hallo!

    Wie stelle ich es am besten an, wenn ich Eingaben aus einem textarea in eine DB und anschließend zwecks Bearbeitung zurück in das textarea laden will ohne die Formatierung zu verlieren?

    Bevor ich die textarea-Eingabe speicher, durchläuft der Inhalt die Funktion quotestr().

    Im textarea siehts bei der Eingabe so aus:

    zeile1
    zeile2
    zeile3

    debug zeigt mir vor quotestr() folgendes:

    zeile1 zeile2 zeile3

    nach quotestr() siehts so aus:

    zeile1\r\nzeile2\r\nzeile3

    Wenn ich nun die Daten aus der DB ins textarea lade, bekomme ich folgende Ausgabe:

    zeile1\r\nzeile2\r\nzeile3

    Ohne quotestr() bekomme ich die Ausgabe mit der Eingabeformatierung zurück, also wie es auch sein soll.

    Wie bekomme ich es mit quotestr() und anschließendem fullquotestr() hin?

    PS: Wenn ich einer beliebigen Variable einen String in der Form:

    1. $teststring = "zeile1\r\nzeile2\r\nzeile3";

    zuweise und die Variable dann anstelle des Datenbank-Wertes zwischen die textarea-tags packe:
    1. <textarea type="text" name="textarea1" id="neID">'.$teststring.'</textarea>

    Erhalte ich eine richtig formatierte Ausgabe:

    zeile1
    zeile2
    zeile3

    Die Zeilenumbrüche werden angewendet aber nicht mit ausgebenen.

    Beim DB-Inhalt, der exakt der selbe ist (meiner Meinung nach), werden die Zeilenumbrüche mit ausgegeben aber nicht angewendet:

    zeile1\r\nzeile2\r\nzeile3 [/code]


  • 1
  • Stoneage Stoneage
    Jedi-General
    0 x
    1143 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2008, 14:06

    vielleicht so: preg_replace("s/\\r\\n/<br>/g")

  • 0 x
    76 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2008, 14:18

    @Tetramatrix:

    Kannst Du das näher erklären, ich bin kein RE-Experte?

    Eigentlich erwartet preg_replace doch 3 Parameter aber wo hört bei dir das suchmuster auf und wo beginnt die ersetzung? Wie gesagt kenne ich mich nur wenig bis gar nicht mit regular expressions aus.

  • 0 x
    76 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2008, 16:06

    Es liegt meiner Einschätzung nach daran, dass die Werte aus der DB single-quoted und nicht double-quoted sind.

    Wenn ich in meinem Beispiel der Variable $teststring einen single-quoted-String übergebe, bekomme ich als Ausgabe ebenso die Umbrüche ausgegeben ohne das sie angewendet werden.

    1. $teststring = 'zeile1\r\nzeile2\r\nzeile3';

    Die Ausgabe ist dann: zeile1\r\nzeile2\r\nzeile3 und nicht mehr:

    zeile1
    zeile2
    zeile3

    Wie kann ich also aus einem single-quoted-String einen double-quoted-String machen?

  • 0 x
    76 Beiträge
    0 Hilfreiche Beiträge
    04. 05. 2008, 16:35

    Hat denn keiner hier schon einmal eine Textarea-Eingabe in einer DB gespeichert und anschließend wieder im Textarea ausgegeben und kann mir sagen wie ich das ohne Formatierungsverlust anstellen soll?

  • pietbonn pietbonn
    Padawan
    0 x
    56 Beiträge
    0 Hilfreiche Beiträge
    06. 05. 2008, 08:06

    Suchst Du evtl. nach nl2br()?

  • sventb sventb
    R2-D2
    0 x
    75 Beiträge
    0 Hilfreiche Beiträge
    14. 10. 2013, 17:46

    Ich habe es bei mir so gelöst:

    1. str_replace(array('\r\n', '\n'), PHP_EOL, $GLOBALS['TYPO3_DB']->quoteStr($this->piVars['myfield'], 'tx_myTable'))

    Also nach dem "entschärfen" des Strings mit Funktion "quoteStr" und vor dem Abspeichern in der DB werden die Zeilenumbrüche korrigiert.

  • 1