当列值本身包含逗号时,以逗号分隔的CSV文件进行爆炸

时间:2013-12-29 11:29:04

标签: php csv explode

我正在逐行读取逗号分隔的CSV文件,然后使用PHP explode 函数分隔每个列值。问题是有些列本身有逗号(,)值,因此它们也会爆炸。

一行数据:

03,1392,06,1000,1,"1000,36,21,68",4,AF,TJ,AF,44071000

此处“1000,36,21,68”必须被视为单个值,但PHP爆炸也会破坏它。我知道这是爆炸如何工作,但是在这种情况下是否有任何替代功能可以使用。此外,我需要从此值中删除双方的双引号(“)

1 个答案:

答案 0 :(得分:2)

不要尝试使用爆炸并自行解析:

使用PHP的内置str_getcsv()函数

或使用fgetcsv()直接从文件

中读取和解析每一行

修改

如果您真的有冒险精神,可以使用SPL来阅读和解析文件

$file = new SplFileObject("data.csv");
while (!$file->eof()) {
    var_dump($file->fgetcsv());
}

$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $fields) {
    var_dump($fields);
}