1

让我们看看我在 csv 字符串中有这个(从 cURL 输出中得到):

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

类似的东西,我使用explode逐行到达,但是有一个字段也使用\ n作为新行,因此弄乱了我的数组索引。我该如何解决这个问题,有什么想法吗?

4

3 回答 3

2

在这种情况下,这是一个严重生成/损坏的 .csv。如果一个字段包含换行符,那么它应该被包围,"以便 csv 解析器可以告诉 line-break-to-start-new-record 除了 line-break-inside-a-field-just-to-make-a - 新线分开。

修复生成 csv 的任何内容,而不是尝试处理它吐出的垃圾。

于 2012-09-03T03:13:26.147 回答
0

Atm 我使用 str_replace 将 '";\n' 替换为 '";#n' 或您喜欢的其他内容,并使用 explode 拆分 #n 分隔符以获取每一行。

我想这就是现在对我有用的东西。

于 2012-09-07T08:18:42.217 回答
0

在您的情况下,这是格式错误的 csv。

实际上,您可以使用 preg_match_all 来解析该文件,而无需关心它是否为 csv。

例如:preg_match('#([^;]+);([^;]+);([^;]+);([^;]+)\s?#', $csv_file_content, $matches);

于 2012-09-03T03:20:48.660 回答