В зависимости от того, на какой операционной системе находится ваш сайт (UNIX, Windows), перенос строки полученный, например, из textarea может быть разным.
Рассмотрим основные случаи замены символов переноса строки на <br> или просто их очистку.
Предположим, у нас есть переменная $text, в которой содержится произвольный текст (с БД или textarea). И в нем имеются переводы строк. Чтобы их перевести в html аналоги, будем использовать тег <br> и функцию замены str_replace() вот так:
<?php echo str_replace(array("\r\n", "\r", "\n"), '<br>', $text); ?>
За счет echo мы сразу выводи результат с уже произведенными хаменами. Заметьте, что в str_replace() используется массив из разных комбинаций перевода строк для разных систем. Так, для UNIX это \n, для Windows - \r\n, а для Mac - \r.
Чтобы полностью избавиться от переводов строк в переменной $text, нужно убрать тег <br> вот так:
<?php echo str_replace(array("\r\n", "\r", "\n"), '', $text); ?>
На заметку. А вообще, чтобы поставить перевод строки в PHP вы можете использовать константу PHP_EOL, например: <?php echo PHP_EOL; ?>. Она создает перевод строки для разных ОС. Если вы видите, что PHP_EOL "работает не правильно", то посмотрите исходный код вашего документа - в нем все будет.
Также не забывайте про trim(), который позволяет удалять не только пробелы в начале и конце переменной, но и переводы строк, если они имеются. Эту функцию часто используют при обработке логина, в формах регистрации.
nl2br(text) - всё намного проще