导出preg_match_all与csv文件匹配

时间:2010-10-05 17:14:06

标签: php regex csv preg-match-all fgetcsv

我正在尝试将匹配从preg_match_all导出到csv文件,但是收到以下错误:

Warning: fputcsv() expects parameter 2 to be array, string given

这是我遇到问题的代码部分,如何修改它以便我能够将匹配项导出到csv文件?

preg_match_all($pattern, $pos, $matches);

$fp = fopen('data.csv', 'w');
foreach($matches[0] as $data){  
 fputcsv($fp,$data);
}
fclose($fp);

2 个答案:

答案 0 :(得分:0)

尝试:

preg_match_all($pattern, $pos, $matches);

$fp = fopen('data.csv', 'w');
fputcsv($fp,$matches[0]);
fclose($fp);

第二个参数需要是一个数组。而不是循环遍历匹配(数组)并一次添加一个,只需传递整个匹配数组($matches[0]

答案 1 :(得分:0)

在不知道字符串或正则表达式的结构的情况下,这只是 guess ,但您可能希望使用PREG_SET_ORDER来制作$matches匹配的数组,而不是默认的PREG_PATTERN_ORDER,它根据模式中的捕获组对结果数组进行分组(documentation有示例)。

preg_match_all($pattern, $subject, $matches, PREG_SET_ORDER);

foreach ($matches as $match) {
    // Get rid of $match[0] (the overall match)
    unset($match[0]);
    // Write the captured groups to the CSV file
    fputcsv($fp, $match);
}

如果这不是您所追求的,那么您需要更多信息,例如您想要的$matches数组的结构,和/或输入($subject)和预期输出( CSV文件的一个例子。)