【发布时间】:2018-04-18 09:51:55
【问题描述】:
我遇到了一些损坏的 csv 文件的问题。我是这样理解的:
column1,column2,column3,column4,column5,column6
123,"some text",""column3 text"",""still column3 text"",4,234,""
123,"some text",""column3 text"",4,234,""
在表格中应该是这样的:
column1 | column2 | column3 | column4 | column5 | column6
123 | some text | "column3 text, still column3 text" | 4 | 234 |
123 | some text | "column3 text" | 4 | 234 |
我正在使用 php 读取文件并尝试将它与 str_getcsv 一起使用到数组中。但是由于这个断引号,它不起作用,并且总是比标题多列。
我根本不需要第 3 列的值,所以我尝试做一些正则表达式来创建三个组,然后做 preg_replace。但我没有得到适用于这两行的正则表达式。
有了这个正则表达式,我只得到第一行:https://regex101.com/r/OjTAAC/1
这样我就得到了第二行:https://regex101.com/r/I2xqPs/1
任何人都对如何获得适用于这两种情况的正则表达式有一些帮助?
【问题讨论】:
-
肯定有别的办法,this regex好像太麻烦了。
-
最后的空""会出问题
-
您可以根据逗号的数量拆分行并逐个执行正则表达式
-
我认为该文件太损坏了,无法理解。我的意思是除了你说“仍然是第 3 列”这一事实之外,还有什么规则说它仍然是第 3 列?
-
还有一个excel导出,第3列的值是'"column3 text,还是column3 text"'。但在 CSV-Export 中,它看起来像 ' ""column3 text"",""still column3 text"" '。我知道它完全坏了。但我不能等到它被修复。
标签: php regex csv preg-match