Php 不带引号的CSV不使用fgetcsv
我试图解析用户通过PHP上传的CSV文件,但它不能正常工作 我上传了几个格式正确的CSV,但是效果很好;我有许多用户试图导入从Excel导出的CSV文件,他们遇到了问题。我将这些文件与我的文件进行了比较,发现Excel文件的条目周围都没有引号。除此之外,它们是相同的。如果我打开它并将其与open Office一起保存,而不做任何更改,它就可以工作。所以我很确定这和引用有关 我的问题是,;如何读取这些格式不正确的CSV 更新:已找到原因Php 不带引号的CSV不使用fgetcsv,php,csv,fgetcsv,Php,Csv,Fgetcsv,我试图解析用户通过PHP上传的CSV文件,但它不能正常工作 我上传了几个格式正确的CSV,但是效果很好;我有许多用户试图导入从Excel导出的CSV文件,他们遇到了问题。我将这些文件与我的文件进行了比较,发现Excel文件的条目周围都没有引号。除此之外,它们是相同的。如果我打开它并将其与open Office一起保存,而不做任何更改,它就可以工作。所以我很确定这和引用有关 我的问题是,;如何读取这些格式不正确的CSV 更新:已找到原因 这是特定于Mac版Excel的。由于某些任意原因,Mac上的
这是特定于Mac版Excel的。由于某些任意原因,Mac上的换行符处理方式不同,因此在使用fgetcsv之前,您应该这样做
ini_set('auto_detect_line_endings',TRUE);
ini_set('auto_detect_line_endings',TRUE);
看一下,它的原型是这样的:
array fgetcsv ( resource $handle [, int $length
[, string $delimiter = ',' [, string $enclosure = '"'
[, string $escape = '\\' ]]]] )
$enclosure
(即第四个参数)的默认值是双引号
如果您尝试指定不需要任何存储模块,为第四个参数指定一个空字符串,该怎么办
(当然,这可能会破坏目前的工作方式——这意味着您必须处理两种不同的情况:字段用双引号括起来的文件,以及第一种情况下无法读取的文件)这是Mac版Excel特有的。由于某些任意原因,Mac上的换行符处理方式不同,因此在使用fgetcsv之前,您应该这样做
ini_set('auto_detect_line_endings',TRUE);
ini_set('auto_detect_line_endings',TRUE);
是的,我看到了。但是,正如你所说,它破坏了目前的工作。没有简单的方法来检查它存储在哪种格式中,并适当地切换行为吗?我想一些正则表达式可以让您确定文件的格式;;另一个解决方案是总是尝试第一个(最常见的情况)解决方案,如果它不起作用,尝试第二个;;考虑到文件的所有行的格式可能都是相同的,只对第一行进行测试就足够了——这意味着您只需要对
fgetcsv
执行一个“无用”调用。您可以向我们展示您的代码并告诉我们问题出在哪里吗?我们使用fgetcsv()没有任何问题,无论格式如何。谢谢你的帮助!!救命稻草。令人惊叹的。找到。