在textarea中换行

我知道当保存一个textarea你可以使用nl2br()或str_replace来改变/ N到br标签等等。但是我不知道如何插入换行到textarea。 我似乎无法find很多有关这些换行符的数据回到textarea。

例如,我有一个表单,用户可以更新字段。 所以用户可以input:

foo bar baz 

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

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

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

但是,textarea将br标签显示为文本而不是在换行符中添加。 我也尝试改变br标签到/ n希望textarea将这些解释为断行,但没有喜悦。 除此之外,我也尝试逃跑等。

所以我的问题是可以做到这一点? 或者更重要的是可以使用HTML / PHP(即时通讯使用smarty)来完成。 如果没有可能可以使用JavaScript来完成?

例子将不胜感激。

谢谢阅读

将其保存到数据库时不要执行nl2br 。 当你用HTML显示文本的时候,做nl2br 。 我强烈build议不要在数据库中存储任何HTML格式(除非你使用了一个丰富的HTML编辑器,在这种情况下,这将是愚蠢的)。

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

您可以使用str_replace<br />标签replace为行尾字符。

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

或者,您可以将数据保存到数据库中,而无需先调用nl2br 。 这样,换行符将保持不变。 当您显示为HTML时,请致电nl2br 。 这种方法的一个额外的好处是,它将需要较less的数据库存储空间,因为换行符是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); 

我的build议是使用换行符将数据保存到数据库,而不是使用nl2brparsing数据。 你应该在输出中使用nl2br而不是input。

对于你的问题,你可以使用PHP或JavaScript:

PHP:

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

jQuery的:

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

PHP方面:从Textareastring到PHPstring

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

PHP方面:PHPstring返回TextAreastring:

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

这对我有用。

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

从PHP使用单引号换行符为我支持换行符时,我将该传递给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; }); 

一些错误的答案张贴在这里。 而不是将\nreplace为<br /> ,而是将<br />replace为\n

所以这里是一个很好的答案,当你在textarea中input时,在你的mysql中存储<br />

 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']); 

我在表单中find的工作是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