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)