<?php /** Пример обработки сообщения из <textarea> При вводе абзвцы отделяются двумя или более переводами строки, одиночный перевод строки продолжает абзац. Попутно удаляются лишние пробелы/табуляция. */ $textarea = $html = ''; if(isset($_POST['msg'])) { // var_dump('<pre>',$_POST,'</pre>'); $msg = $_POST['msg']; // исходное сообщение $msg = str_replace("\r", '', $msg); // эти просто не будем юзать $msg = preg_replace("/\n(?!\n)/", ' ', $msg); // замена одиночных переводов строки на пробел $msg = preg_replace("/[\n]+/", "\n", $msg); // сокращение многократных переводов строки $msg = preg_replace("/[\ \t]+/", ' ', $msg); // сокращение многократных пробелов и табуляции $msg = preg_replace("/^[\ \t]*/m", '', $msg); // убираем пробелы/табуляцию в начале... $msg = preg_replace("/[\ \t]*$/m", '', $msg); // ...и в конце каждой строки // var_dump('<pre>',explode("\n", $msg),'</pre>'); // каждый элемент массива == абзацу $textDB = $msg; // ключевая точка - это пишется в базу и выводится из неё $html = '<p>'.str_replace("\n", "</p><p>", $textDB).'</p>'; // выдача клиенту для просмотра $textarea = str_replace("\n", "\n\n", $textDB); // выдача в форму для правки } ?> <html> <head> <title>Текст из textarea</title> </head> <body> <form method="POST"> <textarea name="msg" cols="50" rows="7"><?php echo $textarea; ?></textarea><br> <input type="submit"> </form> <?php echo $html; ?> </body> </html>