PHP 删除使用 POST 时的换行符

PHP removes line breaks when using POST

我有使用 POST 将信息发送到 PHP 脚本的表单。 PHP 读取 $content 并将其保存到 file.txt,并使用以下代码在浏览器上显示它:

$content = $_POST['content'];

file_put_contents("file.txt", $content);
echo $content;

如果我在表格中使用换行符,则 file.txt 包含所有换行符。但是当我向浏览器回显相同的 $content 时,根本没有换行符。我的意思是在源代码中。我的目的是用另一种形式$content <textarea>,但即使是textarea也不显示任何换行符。

如何file_put_contents找到换行符?

在向浏览器显示内容时使用 php 函数 nl2br()

<?php echo nl2br($content); ?> 

nl2br — Inserts HTML line breaks before all newlines in a string

http://php.net/manual/en/function.nl2br.php

我认为换行符没有消失。它们只是在记事本或基于 Windows 的编辑器中不可见。

大多数浏览器仅使用 Unix / MacOS 换行符 (\n),而 Windows 编辑器仅识别 Windows 换行符 (\r\n)。

而不是

$content = $_POST['content'];

努力去做

$content = str_replace("\n", "\r\n", $_POST['content']);

更多参考:

Difference between CR LF, LF and CR line break types?

试试这个:

$content = $_POST['content'];

file_put_contents("file.txt", $content);
echo "<pre>";
echo $content;
echo "</pre>";

好的,感谢斯凯,问题解决了。我使用 javascript 生成的 <input> 标签来发送包含换行符的文本。我将其更改为 <textarea>,现在我可以捕获所有换行符了。

我仍然不明白为什么从 <input>...

保存到 file.txt 时会有换行符