让我们看看我在 csv 字符串中有这个(从 cURL 输出中得到):
"name";"gender";"address";"phone";\n
"John Doe"; "Male"; "Broke Street\n No. 69 South Pole";"911";\n
类似的东西,我使用explode逐行到达,但是有一个字段也使用\ n作为新行,因此弄乱了我的数组索引。我该如何解决这个问题,有什么想法吗?
在这种情况下,这是一个严重生成/损坏的 .csv。如果一个字段包含换行符,那么它应该被包围,"
以便 csv 解析器可以告诉 line-break-to-start-new-record 除了 line-break-inside-a-field-just-to-make-a - 新线分开。
修复生成 csv 的任何内容,而不是尝试处理它吐出的垃圾。
Atm 我使用 str_replace 将 '";\n' 替换为 '";#n' 或您喜欢的其他内容,并使用 explode 拆分 #n 分隔符以获取每一行。
我想这就是现在对我有用的东西。
在您的情况下,这是格式错误的 csv。
实际上,您可以使用 preg_match_all 来解析该文件,而无需关心它是否为 csv。
例如:preg_match('#([^;]+);([^;]+);([^;]+);([^;]+)\s?#', $csv_file_content, $matches);