textarea中的换行符

fl3*_*3x7 36 html php textarea line-breaks nl2br

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

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

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

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

foo<br />bar<br />baz<br />
Run Code Online (Sandbox Code Playgroud)

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

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

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

例子将不胜感激.

谢谢阅读

Hal*_*yon 65

nl2br将数据保存到数据库时不要这样做.难道nl2br当你在显示HTML文本.我强烈建议不要在数据库中存储任何HTML格式(除非你也使用了丰富的HTML编辑器,在这种情况下,它是愚蠢的).

换行符\n将成为textarea的换行符.

  • 有一点需要指出的是在```(双引号)而不是''`(单引号)之间使用\n.否则它将无效.就像这样:`"\n"` (7认同)

Fra*_*nes 27

您可以使用str_replace<br />标记替换为行尾字符.

str_replace('<br />', PHP_EOL, $textarea);
Run Code Online (Sandbox Code Playgroud)

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


Niz*_*azi 24

啊,这真的很简单

加上

white-space:pre-wrap;
Run Code Online (Sandbox Code Playgroud)

到你的显示元素css

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

p{
   white-space:pre-wrap;
}
Run Code Online (Sandbox Code Playgroud)


小智 8

Some wrong answers are posted here. instead of replacing \n to <br />, they are replacing <br /> to \n

So here is a good answer to store <br /> in your mysql when you entered in textarea:

str_replace("\n", '<br />',  $textarea);
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用以下代码:

$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
Run Code Online (Sandbox Code Playgroud)