PHP使用POST时删除换行符

时间:2016-10-08 18:05:29

标签: php post line-breaks

我的表单使用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如何找到换行符?

4 个答案:

答案 0 :(得分:0)

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

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

nl2br - 在字符串

中的所有换行符之前插入HTML换行符      

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

答案 1 :(得分:0)

我认为换行没有消失。使用记事本或基于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?

答案 2 :(得分:0)

试试这个:

$content = $_POST['content'];

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

答案 3 :(得分:0)

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

我无法理解为什么从file.txt保存到<input>时我可以换行...