2011-12-19 71 views
3

我有一个csv文件(真的很大),我用php解析。csv解析,避免“”

现在是这样。

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....) 

呢?

感谢

回答

5

不要使用爆炸,使用fgetcsv

仅解析字符串时使用str_getcsv如果您的PHP> = 5.3。

0

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

更换,以(例如)

X “等等*等等*等等”,Z,a *值,等等

然后与再次爆炸字符串,

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

然后,只需做阵列上str_replace函数

并以这种方式,你应该工作..

这仅适用,如果你有严格的规定如何解析..(在这种情况下,由爆炸);