首页 文章

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

提问于
浏览
4

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

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

E.g: "2,5,7" 读作 "258"

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

我使用的代码如下:

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

What would be the best way to handle this issue?

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文件 . 这很好 . 希望对某人有所帮助 .

相关问题