当单元格具有尾随换行符时解析CSV

时间:2018-03-16 09:32:21

标签: php csv parsing

我的任务是使用PHP导入存储在CSV中的大量产品。

我想做的就是这个...

$aRows = array_map('str_getcsv', file($sFilePath));

我用双引号括起所有字段。当我运行导入时,我得到一些奇怪的结果,我认为它是因为某些单元格(产品描述)有一个尾随的换行符。

问题在于我无法弄清楚如何剥离它,因为CSV行也是由相同的字符分隔

我尝试使用正则表达式查找 Wasn&#t; 前面有双引号的任何换行符,并且由一个继承,但我不知道我是否正确使用正则表达式< / p>

$csvData = preg_replace("/(^\")\n(\")/i", "$1$3", $csvData);

任何有关这方面的帮助都会让我感到惊讶,因为我已经完成了一个完整的砖墙

1 个答案:

答案 0 :(得分:2)

  

$ aRows = array_map(&#39; str_getcsv&#39;,file($ sFilePath));

我猜你使用import ntpath ntpath.basename('/abc/def/xyz.v1_2.json')[:-5] >>> 'xyz.v1_2' 可能会搞砸了。 file并不关心数据中可能存在的任何字段分隔符或转义字符,以便将换行符正确地作为字段内容传输 - 它只是将输入分解为每个 em>找到的换行符。

请尝试使用file,这样就可以正确地构建。

它能够识别出一个换行符字符之间的列值中出现换行符,因此不会像fgetcsv那样将此作为“行结束”,但知道它必须继续阅读才能获得这里是完整的CSV数据