2012-09-03 18 views
1

让我们来看看我这个在CSV字符串(从卷曲输出了它):PHP读取CSV字段包含在该领域新的生产线

"name";"gender";"address";"phone";\n 
"John Doe"; "Male"; "Broke Street\n No. 69 South Pole";"911";\n 

类似的东西,我用爆炸由线到线,然而有一个字段也使用\ n换行,因此弄乱了我的数组索引。我该如何解决这个问题,任何想法?

+0

编辑我得到的具有双引号的实际csv内容。 – Ardeus

回答

0

大气压林““; \ n”到“”;#N”或者你喜欢和使用爆炸分裂#N分隔符来获得每一行别的东西。

我想这就是什么,我现在的工作。

2

这是一个严重的产生/损坏的.csv,在这种情况下。如果一个字段包含换行符,那么它应该被"所包围,这样csv解析器就可以告诉线路中断到开始的新记录,而不是线路中断 - 场 - 一个新的分开。

解决什么正在生成的CSV,而不是试图去处理它吐出垃圾。

+0

我忘了提及,csv字段实际上是用双引号括起来的,我用str_replace将它删除,因此它留下了干净的数据atm。我将编辑我的帖子。那么我应该使用什么csv解析器,php str_getcsv? – Ardeus

+0

这意味着你自己正在损坏csv。在数据解析之前停止按摩数据。 –

+0

原因是因为它的工作原理,如果该值不包含新行或分隔符。所以它就像使用str_replace一样简单,并爆炸完成工作。现在,如果您指的是str_getcsv($ output,“\ n”,'“')或没有外壳参数,解析器仍然无法识别该字段内的\ n不适用于新的行线。 – Ardeus

0

在你的情况,这是一个畸形的CSV。

其实你可以使用preg_match_all来解析该文件,而不关心它是否是一个CSV或没有。 preg_match('#([^;] +);([^;] +);([^;] +);([^;] +)\ s?#',$ csv_file_content, $匹配);使用str_replace函数来代替

相关问题