我正在尝试编写一个正则表达式,允许我解析excel创建的CSV文件。我注意到当你从excel导出一个CSV时,如果该字段是一个字符串,它将用引号括起来。如果该字符串本身包含引号,它将使用引号转义每个引号!!
我想要做的是将我解析的每一行拆分成字段。鉴于上述情况,当有逗号不在引号内时,我必须拆分。我的正则表达式很糟糕,所以我该怎么做?
我可以用逗号分隔,但是如何说它不在引号之间?
$lines = file($toce_path);
foreach ($lines as $line) {
$line_array = preg_split("/,/", $line);
$test = "($line_array[0], $line_array[1], $line_array[2])";
echo $test.'<br />';
}
This question与我的完全一样,但它不适用于preg_split。 Preg_split需要与Perl兼容的正则表达式语法。
感谢大家的帮助
答案 0 :(得分:4)
答案 1 :(得分:1)
为什么不使用php的内置函数?
答案 2 :(得分:0)
此表达式适用于.NET,它应该与Perl兼容:(?<!\"\w*),
输入:some, "text, here"
仅在some
之后的逗号上返回匹配。