Zum Inhalt springen

textarea Zeilenumbrüche

Erstellt am 4. Mai 2008 · 6 Antworten · letzte Antwort am 14. Oktober 2013

Tags: Frage

TheRisingSun ·

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:

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

zuweise und die Variable dann anstelle des Datenbank-Wertes zwischen die textarea-tags packe:

<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

TheRisingSun ·

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

TheRisingSun ·

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.

$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?

TheRisingSun ·

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?

sventb ·

Ich habe es bei mir so gelöst:

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.