首页 文章

fgetcsv无法读取以mac格式化的csv文件结尾的行,有什么更好的解决方案吗?

提问于
浏览
58

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

ini_set("auto_detect_line_endings", "1");

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

谢谢

2 回答

  • 31

    \r 行结尾是在保存为CSV文件时由Microsoft Excel创建的,因此如果您从Excel电子表格开始,则没有太多可用性 .

    使用 auto_detect_line_endings 工作正常,或者您可以使用 preg_replace("/\r\n|\n\r|\n|\r/", "\n", $subject); 规范化行结尾

  • 5

    php documentation明确建议设置 auto_detect_line_endings .

    但是,我无法理解为什么你想在2010年用 \r 分隔行 . 如果可能,将它们转换为UNIX风格的 \n .

相关问题