0

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

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

在服务器上,我像这样抓取消息文本区域的内容:

$content = $_POST['message'];

如果我回应这个:

echo $content;

文本在一长行中。

如果我回应:

echo nl2br($content);

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

4

1 回答 1

3

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

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

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

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

将未格式化的数据保存到数据库中,即不要它们转换为<br>标签。在输出数据时进行此转换。

于 2013-07-31T20:21:21.713 回答