我有一个非常简单的形式,包括textarea。在textarea中是MarkDown语法,我想将其保存到数据库中。显然,保留任何回车/换行非常重要。
提交表单时,除非我使用nl2br()
PHP函数,否则新行似乎不会发送到服务器。
在服务器上,我抓住了消息textarea的内容,如下所示:
$content = $_POST['message'];
如果我用以下方式回应:
echo $content;
文字在一条长线上。
如果我回复:
echo nl2br($content);
它按预期显示内容。为什么是这样?我假设如果我只是将$ content的值保存到我的数据库中,那么新行字符将被保留?
答案 0 :(得分:3)
浏览器将换行符提交为LF字符(= \n
)。
如果输出这些内容,浏览器将不会显示它们,因为它会忽略普通HTML呈现模式中的换行符。只有将它们转换为<br>
标签,浏览器才会识别它们。
尝试将内容类型设置为text/plain
,您会看到您的浏览器也会呈现换行符:
header('Content-type: text/plain');
echo $content;
将未格式化的数据保存到数据库中,即不将其转换为<br>
标记。在输出数据时执行此转换。