Ti consiglio di sostituire i new line con qualcos'altro:
Codice PHP:
$testo str_replace("\r"''$testo); // toglie i carriage return, che non ho ancora capito se e quando li mette

$testo str_replace("\n"'<br />'$testo); 
oppure
Codice PHP:
$testo str_replace("\n"'\n'$testo); 
(in questo caso leggerai proprio "\n" dove c'è un a-capo, però in questo caso dovresti anche prima sostituire gli eventuali "\n" letterali con "\\n" per non fare confusione. PS: spero di aver scritto il codice giusto)