Php 什么';我的表单文本区域中的新行发生了什么情况?
我有一个由textarea组成的非常简单的表单。在textarea中是我想要保存到数据库的标记语法。显然,保留任何回车/换乘线路非常重要 但是,在提交表单时,除非我使用Php 什么';我的表单文本区域中的新行发生了什么情况?,php,forms,Php,Forms,我有一个由textarea组成的非常简单的表单。在textarea中是我想要保存到数据库的标记语法。显然,保留任何回车/换乘线路非常重要 但是,在提交表单时,除非我使用nl2br()PHP函数,否则新行似乎不会发送到服务器 在服务器上,我获取消息文本区域的内容,如下所示: $content = $_POST['message']; 如果我重复这一点: echo $content; 文本在一条长线上 如果我回应: echo nl2br($content); 它按预期显示内容。为什么会这样?我
nl2br()
PHP函数,否则新行似乎不会发送到服务器
在服务器上,我获取消息文本区域的内容,如下所示:
$content = $_POST['message'];
如果我重复这一点:
echo $content;
文本在一条长线上
如果我回应:
echo nl2br($content);
它按预期显示内容。为什么会这样?我假设如果我只是将$content的值保存到数据库中,那么新行字符将被保留?浏览器将新行作为LF字符(
\n
)提交
如果输出这些内容,浏览器将不会显示它们,因为它会在正常HTML呈现模式下忽略换行符。只有将它们转换为
标记时,浏览器才会识别它们
尝试将内容类型设置为text/plain
,您将看到浏览器也呈现换行符:
header('Content-type: text/plain');
echo $content;
将未格式化的数据保存到数据库中,即不要将其转换为标签。在输出数据时执行此转换。浏览器将换行符提交为LF字符(
\n
)
如果输出这些内容,浏览器将不会显示它们,因为它会在正常HTML呈现模式下忽略换行符。只有将它们转换为
标记时,浏览器才会识别它们
尝试将内容类型设置为text/plain
,您将看到浏览器也呈现换行符:
header('Content-type: text/plain');
echo $content;
将未格式化的数据保存到数据库中,即不要将其转换为标签。在输出数据时执行此转换。或者,您可以输出
pre
标记内的文本或使用空白:pre-line设置样式的元素
或者,您可以输出pre
标记内部的文本,或者使用空白:pre-line设置样式的元素代码>浏览器不接受换行符/回车符。它们被视为空间,并按空间进行渲染。这就是nl2br工作的原因。它将\n
和\r
字符替换为html
标记。如果您在页面上进行了“查看源代码”,您会看到原始源代码中确实包含换行符。永远不要相信你的浏览器显示的内容,因为它的工作就是欺骗你。浏览器不尊重换行符/回车符。它们被视为空间,并按空间进行渲染。这就是nl2br工作的原因。它将\n
和\r
字符替换为html
标记。如果您在页面上进行了“查看源代码”,您会看到原始源代码中确实包含换行符。永远不要相信你的浏览器所显示的,因为它的工作就是欺骗你。