如何为CSV,fgetcsv()问题转义逗号

时间:2013-05-31 06:15:30

标签: php excel csv

我在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,","));

处理此问题的最佳方法是什么?

2 个答案:

答案 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文件。效果很好。希望对您有所帮助。