Moin!
In einem HTML-Formular befindet sich ein textarea-Element, dessen Inhalt auch Zeilenumbrüche enthalten dürfen.
Ok.
Der Inhalt wird in einer SQL-Datenbank gespeichert, so dass aus den Zeilenumbrüchen beispielsweise "\r\n" wird.
Nein, nicht IN der DB. Da stehen die Bytes "13" und "10" drin, also die ASCII-Zeichen für den Windows-Zeilenumbruch.
Wenn dieses Formular wieder aufgerufen wird, wird per
echo "foo.value = '" . utf8_encode($bar) . "';";
Im HTML-Kontext fehlt da definitiv das Escaping.
Und welcher Kontext ist das tatsächlich? Javascript? Dann json_encode() und KEINE Anführungszeichen nehmen, um den Variableninhalt von PHP in einen Javascript-Code zum Definieren einer Javascript-Variablen zu wandeln.
die Textarea gefüllt. Das scheitert, wenn Zeilenumbrüche drin sind, die dann beispielsweise zu
Textareas füllt man, indem man den Inhalt zwischen öffnendem und schließendem <textarea>-Tag platziert und html-escaped.
foo.value = 'ein
Zeilenumbruch';
Javascript! Kontextwechsel nicht beachtet!
> führen, was natürlich die Fehlerkonsole auf den Plan ruft.
>
> Welche Möglichkeiten gibt es da?
>
> PS: Kontextwechsel sind beachtet
Nein!
- Sven Rautenberg