【发布时间】:2013-08-01 04:32:46
【问题描述】:
我有一个由 textarea 组成的非常简单的表单。在 textarea 中是 MarkDown 语法,我想将其保存到数据库中。显然,保留任何回车符/换行符非常重要。
虽然提交表单时,除非我使用 nl2br() PHP 函数,否则换行符似乎不会发送到服务器。
在服务器上,我像这样抓取消息文本区域的内容:
$content = $_POST['message'];
如果我回应这个:
echo $content;
文本在一行中。
如果我回应:
echo nl2br($content);
它按预期显示内容。为什么是这样?我假设如果我只是将 $content 的值保存到我的数据库中,那么换行符将被保留?
【问题讨论】:
-
浏览器不支持换行/回车。它们被视为空间并被渲染。这就是 nl2br 起作用的原因。它将
\n和\r字符替换为html<br>标签。如果您在页面上完成了“查看源代码”,您会看到原始源代码确实包含换行符。永远不要相信你的浏览器显示的内容,因为它的工作就是对你撒谎。