我的任务是使用PHP导入存储在CSV中的大量产品。
我想做的就是这个...
$aRows = array_map('str_getcsv', file($sFilePath));
我用双引号括起所有字段。当我运行导入时,我得到一些奇怪的结果,我认为它是因为某些单元格(产品描述)有一个尾随的换行符。
问题在于我无法弄清楚如何剥离它,因为CSV行也是由相同的字符分隔
我尝试使用正则表达式查找 Wasn&#t; 前面有双引号的任何换行符,并且由一个继承,但我不知道我是否正确使用正则表达式< / p>
$csvData = preg_replace("/(^\")\n(\")/i", "$1$3", $csvData);
任何有关这方面的帮助都会让我感到惊讶,因为我已经完成了一个完整的砖墙
答案 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数据行。