【问题标题】:file_get_contents seems to add extra returns to the datafile_get_contents 似乎为数据添加了额外的回报
【发布时间】:2013-08-15 14:12:25
【问题描述】:

您好,我正在尝试运行一个简单的 php 文件,打开、替换和保存。这是我的代码:

//open file and get data
$data = file_get_contents("input.xml");

// do tag replacements or whatever you want
$data = str_replace("<Property>", "<item>", $data);
$data = str_replace("</Property>", "</item>", $data);

//save it back:
file_put_contents("output.xml", $data);

我的文件打开、替换并保存文件。但是当我打开文件时,我注意到之前只有一个换行符的每个项目后面都有一个额外的换行符。

我测试了将数据直接打印到浏览器,发现file_get_contents 中引入了额外的换行符,而不是在写回新文件时。

有人知道如何防止这些额外的换行符被引入吗?

谢谢!

【问题讨论】:

  • 浏览器调试不是检测空白字符存在的最可靠方法。请改用urlencode() - 它不是为此目的而设计的,但非 ascii 可打印字符将使用其十六进制值进行编码。
  • 可能是 CRLF 与 LF、windows 与 unix 换行符的问题。
  • 似乎是\n\r\n 换行符的问题。
  • hm..我的系统是unix,但是我得到的文件可能来自windows,你是说我应该先转换文件吗?我假设有一些 php 命令可以让我这样做?
  • 你也可以str_replace("\r\n", "\n", $data);

标签: php file-get-contents


【解决方案1】:

非常感谢评论者,这比我想象的更容易解决:

我刚刚做了以下补充:

// fix line endings 
$data = str_replace("\r\n", "\n", $data);

【讨论】:

    【解决方案2】:

    file_get_contents 在返回的字符串末尾添加换行符。 这帮助我删除了换行符:

    $content = trim($content, "\r\n");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多