CSV解析,避免双引号爆炸问题。

3
我有一个CSV文件(非常大),需要用PHP解析。现在的情况是这样的。
x,y,z,value,etc

但有时会出现这种情况:
x,"blah,blah,blah",z,value,etc

做这个操作:explode(',',$string); 如果值是 "",也将其内部全部分裂开。

array([0]=>x,[1]=>"blah,[2]=>blah,[3]=>blah"....)

我该怎么做才能得到这个呢:

array([0]=>x,[1]=>"blah,blah,blah",[2]=>z....)

代替?

谢谢

2个回答

5
不要使用explode,使用fgetcsv。如果您的PHP> = 5.3,请使用str_getcsv来解析字符串。

0

如果我是你,必须使用你所说的方法,我会通过正则表达式解析带引号的文本字符串。

将逗号替换为*(例如)

x,“blah * blah * blah”,z,value,etc

然后再次使用逗号分隔字符串

现在您应该得到一个合适的数组,但现在有了bla * bla * bla。

然后只需对数组进行str_replace即可

以这种方式,您应该可以工作..

仅当您有严格的解析规则时才适用此方法。 (在这种情况下,通过explode);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接