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

问题描述 投票:4回答:2

我在PHP中使用fgetcsv()函数来读取使用Microsoft Excel生成的CSV文件。

问题是CSV文件包含带逗号的值,它按原样读取转义值(带双引号)。

例如:"2,5,7"读作"258"

通过将双引号更改为单引号可以解决该问题。但是,我不想每次都编辑每个CSV文件。

我使用的代码如下:

$handle = fopen($path, "r");
$data = fgetcsv($handle,1000,",","'");
do
{
    **READ CSV**
}
while ($data = fgetcsv($handle,5000,","));

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

php excel csv
2个回答
7
投票

改变这一行

$data = fgetcsv($handle,1000,",","'");

$data = fgetcsv($handle,1000,",",'"');

或者只是取消最后两个参数,因为它们是默认值

$data = fgetcsv($handle,1000);

fgetcsv的第四个参数是外壳字符,它告诉如何构造可能在其中包含分隔符的字段。


0
投票

我在使用PHP的fgetcsv()函数读取.csv文件时遇到了同样的问题。我的.csv文件中的值中包含逗号,该函数也用于在逗号上分隔它们。您可以通过将它们包装在引号中来解决这个问题,但是对于一个大文件来说它很耗时。我在LibreOffice Calc(Ubuntu 16.04)中遇到了这个问题。

这就是我为克服这个问题所做的工作。我只需复制所有文件数据并将其粘贴到Google Sheet中,然后将其下载为.csv文件。这很好。希望对某人有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.