解析CSV行的PHP正则表达式



使用:PHP 7

我需要解析CSV文件中的字符串,并在数组中返回值。我正在使用preg_match_all,但到目前为止运气不佳。

这是字符串:

"494","1","41","2009-05-18","NULL","0","3","JONES,ZACK ZX",""

这是PHP代码:

<?php
$s = '"494","1","41","2009-05-18","NULL","0","3","JONES,ZACK ZX",""' ;
$p =  '(?<=^|,)(?:[^,"]+|")?(?=,|$)|(?<=^|,)".*?"(?=,|$)';
$m = Array();
$e = preg_match_all($p, $s, $m);

执行后,$m数组应包含所有字符串值,不包含双引号字符串封闭字符。

如果您能帮助我们使用正确的正则表达式,我们将不胜感激。

根据iainn的建议,我尝试了str_getcsv,它成功了!

答案是:

$m = str_getcsv($s, ",", """);

最新更新