textarea中的换行符

时间:2011-06-25 21:30:59

标签: php html textarea line-breaks nl2br

我知道在保存textarea时你可以使用nl2br()或str_replace将/ n更改为br标签等。但是我不确定如何将换行插入到textarea中。我似乎找不到很多关于将数据放回带有这些换行符的文本区域的信息。

例如,我有一个用户可以更新字段的表单。因此用户可以输入:

foo
bar
baz

当它保存到数据库时,它将保存为:

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

现在,当用户在页面刷新后返回到该表单时,所有字段都会通过从数据库中获取数据自动填充其先前的数据。

然而,textarea将br标签显示为文本而不是添加换行符。我也尝试将br标签更改为/ n希望textarea将这些解释为换行但没有快乐。除此之外,我还尝试了逃避等等。

所以我的问题可以做到吗?或者更重要的是可以使用HTML / PHP(我使用smarty)来完成。如果不可能,可以使用javascript完成吗?

示例将不胜感激。

感谢阅读

13 个答案:

答案 0 :(得分:65)

将{C}保存到数据库时不要执行nl2br。当您在HTML中显示文本时,请nl2br。我强烈建议不要在数据库中存储任何HTML格式(除非你也使用了丰富的HTML编辑器,在这种情况下,它不是很傻)。

换行符\n将成为textarea中的换行符。

答案 1 :(得分:27)

您可以使用str_replace<br />代码替换为行尾字符。

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

或者,您可以先将数据保存在数据库中,而无需先调用nl2br。这样就可以保留换行符。当您显示为HTML时,请致电nl2br。这种方法的另一个好处是,它会占用数据库中较少的存储空间,因为换行符是1个字符,而不是“<br />”是6。

答案 2 :(得分:23)

啊,真的很简单

只需添加

white-space:pre-wrap;

显示元素css

我的意思是如果你使用<p>显示结果,那么你的css应该是

p{
   white-space:pre-wrap;
}

答案 3 :(得分:6)

您可以使用以下代码:

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

答案 4 :(得分:2)

这里发布了一些错误的答案。 而不是将\n替换为<br />,而是将<br />替换为\n

因此,当你输入textarea时,这是在你的mysql中存储<br />的一个很好的答案:

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

答案 5 :(得分:1)

我的建议是使用换行符将数据保存到数据库,而不是使用nl2br解析它。你应该在输出中使用nl2br而不是输入。

对于您的问题,您可以使用php或javascript:

PHP:

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

jQuery的:

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

答案 6 :(得分:1)

简单的方法:

  1. 用它来插入mysql:

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

  2. 并将其用于输出:

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

答案 7 :(得分:0)

PHP方面:从Textarea字符串到PHP字符串

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

PHP方面:PHP字符串返回TextArea字符串:

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

答案 8 :(得分:0)

这适用于我。

id name surname id_product
1   a    a          1
2   b    b          1
3   c    c          2
4   e    e          9

答案 9 :(得分:0)

From PHP using single quotes for the line break worked for me to support the line breaks when I pass that var to an HTML text area value attribute

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;
});

答案 10 :(得分:0)

我在表格中找到的作品是 str_replace('&amp; lt; br&amp; gt;',PHP_EOL,$ textarea);

答案 11 :(得分:-1)

我不确定这是可行的,但您应该尝试<pre><textarea> ... </textarea></pre>

答案 12 :(得分:-4)

<?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