Was hab ich mich damit rum geschlagen und kein einziges Suchergebnis bei g* konnte mir die Lösung bieten.
Kurz zum Problem. Ich lese mit PHP Text aus einer MySQL-Datenbank, welcher auch Zeilenumbrüche enthalten kann.
Diese Zeilenumbrüche werden mit

\n

oder

\r\n

codiert. Ich weiß, dass in JS Zeilenumbrüche in Strings verboten sind und wollte diese nun ersetzten. Dafür gibt es mich folgende Möglichkeiten:

nl2br brachte nichts und kann in der Ausführung auch nicht wirklich beeinflusst werden. Ok dann mit str_replace oder preg_replace.
Was ich versucht habe war nun folgendes:

$str = str_replace('\r\n','
',$str);
$str = str_replace('\r','
',$str);
$str = str_replace('\n','
',$str);

Nichts hat geholfen, der Fehler war noch da und der Umbruch war sogar noch im Quellcode zu sehen.
Dann fiehl mir Gott sei Dank ein, dass PHP einen Unterschied macht ob man SingleQuotes (‘) oder DoubleQuotes (“) benutzt. Code in SingleQuotes wird bspw. nicht nach PHP-Variablen geparst. Also versuchte ich es mal so:

$str = str_replace("\r\n","
",$str);

Und siehe da, die Sonderzeichen wurden wie gewünscht ersetzt und der JavaScript-Fehler unterminated string literal war verschwunden. Bitte. Danke.