我正在尝试解析用户通过PHP上传的CSV文件,但它无法正常工作。
我已经上传了几个格式正确的CSV,但它运行正常;我有很多用户试图导入从Excel导出的CSV文件,但他们遇到了问题。我已将文件与我的文件进行比较,并注意到Excel文件都缺少条目周围的引号。除此之外,它们是相同的。如果我打开它并使用Open Office保存它,而不进行任何更改它是否有效。所以我很确定它与引号有关。
我的问题是;如何阅读这些格式不正确的CSV?
更新:已找到原因!
这是Mac版的Excel特有的。由于某些任意原因,在Mac上处理换行符的方式不同,所以在使用fgetcsv之前,你应该这样做;
ini_set('auto_detect_line_endings',TRUE);
答案 0 :(得分:22)
这是Mac版的Excel特有的。由于某些任意原因,在Mac上处理换行符的方式不同,所以在使用fgetcsv之前,你应该这样做;
ini_set('auto_detect_line_endings',TRUE);
答案 1 :(得分:1)
查看manual page of fgetcsv
,其原型如下:
array fgetcsv ( resource $handle [, int $length
[, string $delimiter = ',' [, string $enclosure = '"'
[, string $escape = '\\' ]]]] )
$enclosure
的默认值(即第4个参数)是双引号。
如果您尝试指定不需要任何机箱,为第4个参数指定空字符串会怎样?
(当然,这可能会破坏现在正在运行的东西 - 这意味着你必须处理两个独立的案例:包含双引号的字段的文件,以及无法通过双引号读取的文件第一种情况)