Разрывы строк в текстовом поле
Я знаю, что при сохранении текстовой области вы можете использовать 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?
Примеры будут оценены.
спасибо за чтение
Ответы
Ответ 1
Не выполняйте nl2br
, когда вы сохраняете его в базе данных. Do nl2br
, когда вы показываете текст в HTML. Я могу настоятельно рекомендовать не хранить HTML-форматирование в базе данных (если вы не используете богатый редактор HTML, и в этом случае было бы глупо не делать этого).
Новая строка \n
просто станет символом новой строки в текстовом поле.
Ответ 2
Вы можете использовать str_replace
, чтобы заменить теги <br />
на символы конца строки.
str_replace('<br />', PHP_EOL, $textarea);
В качестве альтернативы вы можете сохранить данные в базе данных, не вызвав сначала nl2br
. Таким образом, разрывы строк останутся. Когда вы показываете как HTML, вызывайте nl2br
. Дополнительным преимуществом этого подхода является то, что для вашей базы данных потребуется меньше места для хранения, так как разрыв строки - 1 символ, в отличие от "<br />
", который равен 6.
Ответ 3
Ahh, это действительно просто
просто добавьте
white-space:pre-wrap;
вашему элементу отображения css
Я имею в виду, если вы показываете результат с помощью <p>
, то ваш css должен быть
p{
white-space:pre-wrap;
}
Ответ 4
Вы можете использовать следующий код:
$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
Ответ 5
Моя рекомендация состоит в том, чтобы сохранить данные в базе данных с разрывами строк, вместо этого разобрав ее с помощью nl2br. Вы должны использовать nl2br на выходе, не входящем.
Для вашего вопроса вы можете использовать php или javascript:
PHP:
str_replace('<br />', "\n", $textarea);
JQuery
$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
Ответ 6
Сторона PHP: от строки Textarea до строки PHP
$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);
Сторона PHP: строка PHP возвращается к строке TextArea:
$list = str_replace('|', ' ', $r['db_field_name']);
Ответ 7
Это работает на меня.
str_replace(array("\r", "\n"), ' ', $textareavalue);
Ответ 8
От 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;
});
Ответ 9
Некоторые неправильные ответы публикуются здесь.
вместо замены \n
на <br />
они заменяют <br />
на \n
Итак, вот хороший ответ на сохранение <br />
в вашем mysql при вводе в textarea:
str_replace("\n", '<br />', $textarea);
Ответ 10
Простой способ:
-
Используйте это для вставки в mysql:
$msg = $_GET['msgtextarea']; //or POST and my msg field format: text
$msg = htmlspecialchars($msg, ENT_QUOTES);
-
И используйте это для вывода:
echo nl2br($br['msg']);
Ответ 11
То, что я нашел, работает в форме:
str_replace ('& lt; br & gt;', PHP_EOL, $textarea);
Ответ 12
Я не уверен, что это возможно, но вы должны попробовать <pre><textarea> ... </textarea></pre>
Ответ 13
<?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