我正在尝试解析CSV.我想把它放到一个数据库中,或者只是用
JavaScript解析它,但是由于语法错误,这两种方式都失败了.我的整个CSV文件都在这里:
https://gist.github.com/1023560
如果你注意到,它会在双引号中有双引号的地方中断,并且在插入MySQL时也会失败.第一次突破见第13行.它中断而不是返回完整:
<a href="http://www.facebook.com/pages/Portland-Community-Gardens/139244076118027?v=wall" target="_blank"><img src="/shared/cfm/image.cfm?id=348340" alt="Facebook" width="100" height="31" /></a>
它返回:
<a href="
对于JavaScript,我将使用Ben Nadel的CSVToArray():
http://www.bennadel.com/blog/1504-Ask-Ben-Parsing-CSV-Strings-With-Javascript-Exec-Regular-Expression-Command.htm
我的最终目标是放入MySQL,这样我就可以用PHP的json_encode()回显JSON提要.
我注意到可能有问题的是,双引号可以在HTML标签中,也可以作为HTML标签的textNodes,因此“< span class =”text“>”示例“< / span>”
第一组引号是CSV列,第二组是HTML引号,第三组是文本引号.
最佳答案 您可以欺骗它并使用正则表达式来查找:
"(.*?)"(?=,|$)
但这就是hack-ish(基本上,只有在紧跟逗号或行尾时才接受结束引用).相同的逻辑适用于find-replace. (同样,这一切都假设“迷路”引用永远不会遵循标准的CSV规则(例如,在它之前或之后有一个逗号/行[开头/结尾]))
我假设您无法控制原始数据并且必须使用您拥有的数据?
编辑
虽然我只是在你的一小部分数据上尝试了这个,但这似乎找到了“迷路”引号,你可以用“”代替“”:
(?<!^|"|,)"(?!"|,|$)