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的换行符.
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)