带有逗号的csv的str_getcsv问题

时间:2014-04-12 14:31:37

标签: php parsing csv

这是我的示例csv(具有帖子名称,标签(以逗号分隔)和日期:

Post, Tags, Date
Hello world, "tag1, tag2, tag3", "10-04-13"
Hello world 2, "tag1, tag2", "10-04-13"

在php中使用str_getcsv,我得到以下数组

Array
(
    [0] => Post
    [1] =>  Tags
    [2] =>  Date
Hello world
    [3] =>  \"tag1
    [4] =>  tag2
    [5] =>  tag3\"
    [6] =>  \"10-04-13\"
Hello world 2
    [7] =>  \"tag1
    [8] =>  tag2\"
    [9] =>  \"10-04-13\"
)

正如您所看到的,当str_getcsv解析csv时,标记中的逗号会搞乱。

任何解决方案? Csv通过excel 2007从xls导出

1 个答案:

答案 0 :(得分:0)

看起来您的CSV正在使用反斜杠转义引号导出,因此引号被视为数据的一部分,而不是字符串数据的容器。

echo您传递给str_getcsv的数据,我敢打赌它看起来像这样:

Post, Tags, Date
Hello world, \"tag1, tag2, tag3\", \"10-04-13\"
Hello world 2, \"tag1, tag2\", \"10-04-13\"

在某处添加了转义,您需要找到发生这种情况的位置并阻止它,对上面显示的损坏数据进行后处理可能会导致更多问题,尤其是当您的CSV包含实际引号或反斜杠时在它的任何地方。