quello che tu chiami "a capo" è un carattere speciale che ha senso dentro una textarea, ma in HTML non vuol dire nulla.

In HTML deve essere sostituito con

invece di $testo prova ad usare nl2br($testo)