Я знаю, что при сохранении текстовой области вы можете использовать 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('|', ' ', $r['db_field_name']);
Это работает на меня.
str_replace(array("\r", "\n"), ' ', $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);
Простой способ:
Используйте это для вставки в mysql:
$msg = $_GET['msgtextarea']; //or POST and my msg field format: text $msg = htmlspecialchars ($msg, ENT_QUOTES);
И используйте это для вывода:
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