Sven Rautenberg: utf8_encode, aber \n, \r\n, \r sollen erhalten bleiben

Beitrag lesen

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