导入在实际字段中包含换行符的CSV

Hor*_*rse 10 php csv import line-breaks

我使用PHP导入CSV文件,该文件来自excel电子表格.有些字段中包含换行符,因此当我在excel/open office电子表格中重新打开csv时,它会错误地解释换行符的位置.

同样在我的脚本中,使用fgetcsv遍历每一行,它不正确地断行不应该在哪里.

我可以手动清理数据,但a)需要很长时间作为10k行文件,b)数据从客户现有软件导出

有关如何在导入过程中自动解决此问题的任何想法?我原本以为分隔字段会对它进行排序,但事实并非如此.

dan*_*sky 16

接受的答案并没有解决我的问题,但我最终在谷歌代码上找到了这个CSV解析器库,适用于CSV的多行字段.

parsecsv-for-php:https:
//github.com/parsecsv/parsecsv-for-php


出于历史目的,原始项目主页是:http:
//code.google.com/p/parsecsv-for-php/

  • +1 这是迄今为止最好的解析器!比 str_getcsv 或类似的更好。我的数据在字段中包含 HTML 和换行符。这是唯一正确的解析器!谢谢! (2认同)
  • 对于最广泛使用的编程语言之一的最常见格式之一,很难找到准确的解析器,这有点令人遗憾。我想这部分是因为没有官方标准,但引用值内的换行符绝对是 CSV 解析器应该能够处理的。 (2认同)

Mac*_*cky 3

我也遇到了这个问题,没有找到正确读取数据的方法。

就我而言,这是一次性导入,因此我制作了一个脚本来搜索列中的所有换行符并将其替换为类似#####. 然后我导入数据并用换行符替换它。

如果您需要定期导入,您可以编写自己的 CSV-Parser,这可以解决问题。如果文本列在其中,""您可以将两列之间的所有内容""视为一列(检查"内容内的转义)。