我正在使用php的fgetcsv函数解析一个csv文件。它可以将一行中的所有内容解析出来,后来我发现,csv文件包含回车符"\r"。我看到这在之前被报告为php的bug。我通过设置php运行时配置来解决了这个问题,配置如下 -
ini_set("auto_detect_line_endings", "1");
还有其他解决方案吗?或者这是正确的方式吗?
谢谢
php文档 明确建议设置 auto_detect_line_endings
。
然而,我无法理解为什么你想在2010年使用 \r
作为行分隔符。如果可能的话,请将它们转换为UNIX风格的 \n
。
auto_detect_line_endings
真是太神奇了! - quickshiftin\r
行尾标记是由 Microsoft Excel 在保存为 CSV 文件时创建的,因此如果您从 Excel 电子表格开始,则没有太多绕过它的方法。
使用 auto_detect_line_endings
可以正常工作,或者您可以使用 preg_replace("/\r\n|\n\r|\n|\r/", "\n", $subject);
规范化行尾标记。
fopen
之前完成。我在调用fopen
和fgetcsv
之间添加了它以进行测试,但没有起作用。我再也不会浪费那二十分钟了。 :-) - Scott Keck-Warren