разрывы строк в текстовом поле

Я знаю, что при сохранении текстовой области вы можете использовать nl2br () или str_replace, чтобы изменить теги / n на br и т. Д. Однако что я не уверен в том, как вставлять разрывы строк в текстовое поле. Я не могу найти много информации о том, чтобы вернуть данные в текстовое поле с этими разрывами строк.

Например, у меня есть форма, где пользователи могут обновлять поля. Таким образом, пользователь может ввести:

foo bar baz 

Когда это будет сохранено в базе данных, оно будет сохранено как:

 foo<br />bar<br />baz<br /> 

Теперь, когда этот пользователь возвращается к этой форме после обновления страницы, все поля автоматически заполняются их предыдущими данными, беря данные из базы данных.

Однако textarea показывает br-теги как текст вместо добавления в разрывы строк. Я также попытался изменить теги br в / n, надеясь, что textarea будет интерпретировать их как разрывы строк, но не радость. Как и в этом, я также пытался убежать и т. Д.

Так что мои вопросы могут быть сделаны? Или, что еще более важно, это можно сделать с помощью HTML / PHP (im using smarty). Если это невозможно, это можно сделать с помощью javascript?

Примеры были бы оценены.

Спасибо за прочтение

Не делайте nl2br когда вы сохраняете его в базе данных. Сделайте nl2br когда вы показываете текст в HTML. Я могу настоятельно рекомендовать не хранить HTML-форматирование в базе данных (если только вы не используете богатый редактор HTML, и в этом случае было бы глупо не делать этого).

Новая строка \n просто станет символом новой строки в текстовом поле.

Вы можете использовать str_replace для замены тегов <br /> на символы конца строки.

 str_replace('<br />', PHP_EOL, $textarea); 

Кроме того, вы можете сохранить данные в базе данных, не вызвав сначала nl2br . Таким образом, разрывы строк останутся. Когда вы показываете как HTML, вызовите nl2br . Дополнительным преимуществом этого подхода является то, что для вашей базы данных потребуется меньше места для хранения, так как разрыв строки – 1 символ, в отличие от « <br /> », который равен 6.

Ах, это действительно просто

просто добавь

 white-space:pre-wrap; 

к вашему элементу отображения css

Я имею в виду, если вы показываете результат с помощью <p> тогда ваш css должен быть

 p{ white-space:pre-wrap; } 

Вы можете использовать следующий код:

 $course_description = nl2br($_POST["course_description"]); $course_description = trim($course_description); 

Моя рекомендация состоит в том, чтобы сохранить данные в базе данных с разрывами строк, вместо этого разобрав ее с помощью nl2br. Вы должны использовать nl2br на выходе, а не на вход.

Для вашего вопроса вы можете использовать php или javascript:

PHP:

 str_replace('<br />', "\n", $textarea); 

JQuery:

 $('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N")); 

PHP Side: от строки Textarea до строки PHP

 $newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']); 

PHP-сторона: строка PHP возвращается к строке TextArea:

 $list = str_replace('|', '&#13;&#10;', $r['db_field_name']); 

Это работает на меня.

  str_replace(array("\r", "\n"), '&#10;', $textareavalue); 

От PHP, использующего одинарные кавычки для разрыва строки, работал для меня, чтобы поддерживать разрывы строк при передаче этого var в атрибут значения текстовой области HTML

PHP

 foreach ($videoUrls as $key => $value) { $textAreaValue .= $value->video_url . '\n'; } 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HTML / JS

 $( document ).ready(function() { var text = "<?= htmlspecialchars($textAreaValue); ?>"; document.getElementById("video_urls_textarea").value = text; }); 

Некоторые неправильные ответы размещены здесь. вместо замены \n на <br /> , они заменяют <br /> на \n

Итак, вот хороший ответ для хранения <br /> в вашем mysql, когда вы вошли в textarea:

 str_replace("\n", '<br />', $textarea); 

Простой способ:

  1. Используйте это для вставки в mysql:

     $msg = $_GET['msgtextarea']; //or POST and my msg field format: text $msg = htmlspecialchars ($msg, ENT_QUOTES); 

  2. И используйте это для вывода:

     echo nl2br ($br['msg']); 

То, что я нашел, работает в форме: str_replace ('& lt; br & gt;', PHP_EOL, $ textarea);

Я не уверен, что это возможно, но вы должны попробовать <pre><textarea> ... </textarea></pre>

 <?php $smarty = new Smarty; $smarty->assign('test', "This is a \n Test"); $smarty->display('index.tpl'); ?> 

В index.tpl

 {$test|nl2br} 

В HTML

 This is a<br /> test