【发布时间】:2011-03-27 08:11:43
【问题描述】:
我正在尝试编写一个正则表达式,它允许我解析 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 兼容的正则表达式语法。
感谢大家的帮助
【问题讨论】:
-
是否可以改用合适的 CSV 解析器?
-
另一个问题的正则表达式对我来说似乎与 Perl 兼容。如果它不起作用,我会感到惊讶。
-
@mmyers - 我不确定哪些可用?我确实尝试在 PHP 中找到一些东西,但我读到了一些 cmet,fgetcsv 不能很好地与 excel 创建的 CSV 配合使用。但我对此非常接近,我对正则表达式毫无希望。
-
@Dan - 我一直收到无定界符错误,但我只是用
/将它包裹起来,它似乎正在工作!该死的。