Простейший редактор сообщений для гостевухи

Материал из Lblss.ru
Перейти к: навигация, поиск
<?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>
Персональные инструменты