Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不带引号的CSV不使用fgetcsv_Php_Csv_Fgetcsv - Fatal编程技术网

Php 不带引号的CSV不使用fgetcsv

Php 不带引号的CSV不使用fgetcsv,php,csv,fgetcsv,Php,Csv,Fgetcsv,我试图解析用户通过PHP上传的CSV文件,但它不能正常工作 我上传了几个格式正确的CSV,但是效果很好;我有许多用户试图导入从Excel导出的CSV文件,他们遇到了问题。我将这些文件与我的文件进行了比较,发现Excel文件的条目周围都没有引号。除此之外,它们是相同的。如果我打开它并将其与open Office一起保存,而不做任何更改,它就可以工作。所以我很确定这和引用有关 我的问题是,;如何读取这些格式不正确的CSV 更新:已找到原因 这是特定于Mac版Excel的。由于某些任意原因,Mac上的

我试图解析用户通过PHP上传的CSV文件,但它不能正常工作

我上传了几个格式正确的CSV,但是效果很好;我有许多用户试图导入从Excel导出的CSV文件,他们遇到了问题。我将这些文件与我的文件进行了比较,发现Excel文件的条目周围都没有引号。除此之外,它们是相同的。如果我打开它并将其与open Office一起保存,而不做任何更改,它就可以工作。所以我很确定这和引用有关

我的问题是,;如何读取这些格式不正确的CSV

更新:已找到原因


这是特定于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()没有任何问题,无论格式如何。谢谢你的帮助!!救命稻草。令人惊叹的。找到。