我在PHP中使用fgetcsv()函数来读取使用Microsoft Excel生成的CSV文件。
问题是CSV文件包含带逗号的值,它按原样读取转义值(带双引号)。
例如:"2,5,7"
读作"2
&5
&8"
通过将双引号更改为单引号可以解决该问题。但是,我不想每次都编辑每个CSV文件。
我使用的代码如下:
$handle = fopen($path, "r"); $data = fgetcsv($handle,1000,",","'"); do { **READ CSV** } while ($data = fgetcsv($handle,5000,","));
处理这个问题的最佳方法是什么?
改变这一行
$data = fgetcsv($handle,1000,",","'");
至
$data = fgetcsv($handle,1000,",",'"');
或者只是取消最后两个参数,因为它们是默认值
$data = fgetcsv($handle,1000);
fgetcsv的第四个参数是外壳字符,它告诉如何构造可能在其中包含分隔符的字段。
我在使用PHP的fgetcsv()函数读取.csv文件时遇到了同样的问题。我的.csv文件中的值中包含逗号,该函数也用于在逗号上分隔它们。您可以通过将它们包装在引号中来解决这个问题,但是对于一个大文件来说它很耗时。我在LibreOffice Calc(Ubuntu 16.04)中遇到了这个问题。
这就是我为克服这个问题所做的工作。我只需复制所有文件数据并将其粘贴到Google Sheet中,然后将其下载为.csv文件。这很好。希望对某人有所帮助。