65

我正在使用带有 fgetcsv 函数的 php 解析 csv 文件。它解析了一行中的所有内容,后来我发现,csv包含carraige返回为“\ r”。我看到了 - 它之前被报告为 php bug。我通过设置 php 运行时配置解决了这个问题 -

ini_set("auto_detect_line_endings", "1");

有没有更多的解决方案或者这是正确的方法?

谢谢

4

2 回答 2

37

php 文档auto_detect_line_endings明确推荐设置。

但是,我无法理解您为什么要\r在 2010 中使用 分隔行。如果可能,请将它们转换为 UNIX 样式的\n.

于 2010-12-27T21:00:20.833 回答
5

\r行尾是由 Microsoft Excel 在另存为 CSV 文件时创建的,因此如果您从 Excel 电子表格开始,则没有太多解决办法。

使用auto_detect_line_endings效果很好,或者您可以使用preg_replace("/\r\n|\n\r|\n|\r/", "\n", $subject);

于 2015-03-18T14:02:48.900 回答