\r (carriage return) und \n (new line feed) sind genau wie \t (tab) etc. nicht-druckbare Zeichen des Ascii Satzes. Sie entsprechen also genau einem Zeichen, z.B. hexadezimal 12 für \n, das aber bspw. in php eben nicht in Fließtext darstellbar ist. Deshalb gibt es die Konvention, die genannten Zeichen mit einem führenden Escapezeichen, dem Backslash, als Sonderzeichen zu interpretieren. In php geschieht das innerhalb von doppelten Hochkommata, aber auch z.B. bei Angaben wie dieser:
PHP-Code:
<?
$text = 'ein wort
und der rest';
In deinem Falle hast Du aber einfach zwei einzelne Zeichen, eben das \ und das n. Du könntest str_replace () nutzen, um die Strings in echte Sequenzen umzusetzen. Dabei kannst Du Dir eben das unterschiedliche Verhalten für verschiedene Stringbegrenzer zunutze machen
PHP-Code:
<?
$aReplace = array (
'\r' => "\r" ,
'\n' => "\n" ,
'\t' => "\t"
);
$sText = str_replace (
array_keys ($aReplace) ,
array_values ($aReplace) ,
$sText
);