【问题标题】:PHP removes line breaks when using POSTPHP 在使用 POST 时删除换行符
【发布时间】:2017-02-17 12:56:07
【问题描述】:

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

【问题讨论】:

  • 您使用的是 Windows 吗?
  • 是(使用 apache)
  • 换行符不是 HRML br。 nl2br()
  • @batz:这些正则表达式替换都没有任何效果来显示我的换行符。

标签: php post line-breaks


【解决方案1】:

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

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

nl2br — 在字符串中的所有换行符之前插入 HTML 换行符

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

【讨论】:

  • echo nl2br($content) 没有任何作用。我也尝试用 str_replace 将“\n”替换为“
    ”,但没有成功。
  • @darx 我在我的最终文件上测试过显示换行符,浏览器也使用nl2br() 显示换行符。你能告诉我你有什么$content吗?
【解决方案2】:

我认为换行符并没有消失。它们只是在记事本或基于 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?

【讨论】:

  • 感谢您的回答,但将“\n”替换为“\r\n”没有任何效果。当我在任何编辑器中打开 file.txt 时,它包含所有换行符。所以这不是问题。问题是在网页中,我无法获得这些换行符。
【解决方案3】:

试试这个:

$content = $_POST['content'];

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

【讨论】:

  • 试过了。没有帮助。似乎 POST 以某种方式摆脱了我所有的换行符,但事实并非如此,因为file_put_contents 将所有换行符保存到文本文件中。
  • $content 是来自 textarea 还是 input?
  • 它来自 javascript 生成的输入标签。输入不支持换行?但是我如何才能将它们保存在保存的文件中...
【解决方案4】:

好的,感谢 Skye,问题解决了。我使用 javascript 生成的&lt;input&gt; 标记来发送包含换行符的文本。我把它改成了&lt;textarea&gt;,现在我可以捕捉到所有的换行符了。

我仍然无法理解为什么从 &lt;input&gt; 保存到 file.txt 时会出现换行符...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多