Подтвердить что ты не робот

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

Я знаю, что при сохранении текстовой области вы можете использовать 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?

Примеры будут оценены.

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

4b9b3361

Ответ 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('|', '&#13;&#10;', $r['db_field_name']);

Ответ 7

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

 str_replace(array("\r", "\n"), '&#10;', $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