我在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,","));
处理此问题的最佳方法是什么?
答案 0 :(得分:7)
更改此行
$data = fgetcsv($handle,1000,",","'");
到
$data = fgetcsv($handle,1000,",",'"');
或者只留下最后两个参数,因为它们是默认值
$data = fgetcsv($handle,1000);
fgetcsv的第四个参数是外壳字符,它告诉如何构建可能在其中包含分隔符的字段。
答案 1 :(得分:0)
我在使用PHP的 fgetcsv()函数读取.csv文件时遇到了同样的问题。 。您可以通过用引号将它们引起来来解决这个问题,但是对于大文件又要花很多时间。我在 LibreOffice Calc(Ubuntu 16.04)中遇到了这个问题。
这是我为克服此问题所做的工作。我只是复制了所有文件数据并将其粘贴到 Google表格中,然后将其下载为.csv文件。效果很好。希望对您有所帮助。