我正在尝试将匹配从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);
答案 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文件的一个例子。)