我的表单textarea中的新行发生了什么?

时间:2013-07-31 20:18:17

标签: php forms

我有一个非常简单的形式,包括textarea。在textarea中是MarkDown语法,我想将其保存到数据库中。显然,保留任何回车/换行非常重要。

提交表单时,除非我使用nl2br() PHP函数,否则新行似乎不会发送到服务器。

在服务器上,我抓住了消息textarea的内容,如下所示:

$content = $_POST['message'];

如果我用以下方式回应:

echo $content;

文字在一条长线上。

如果我回复:

echo nl2br($content);

它按预期显示内容。为什么是这样?我假设如果我只是将$ content的值保存到我的数据库中,那么新行字符将被保留?

1 个答案:

答案 0 :(得分:3)

浏览器将换行符提交为LF字符(= \n)。

如果输出这些内容,浏览器将不会显示它们,因为它会忽略普通HTML呈现模式中的换行符。只有将它们转换为<br>标签,浏览器才会识别它们。

尝试将内容类型设置为text/plain,您会看到您的浏览器也会呈现换行符:

header('Content-type: text/plain');
echo $content;

将未格式化的数据保存到数据库中,即将其转换为<br>标记。在输出数据时执行此转换。