Экспорт совпадений preg_match_all в CSV-файл - PullRequest
0 голосов
/ 05 октября 2010

Я пытаюсь экспортировать совпадения из 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 голосов
/ 05 октября 2010

Не зная структуры вашей строки или регулярного выражения, это всего лишь думаю , но похоже, что вы, возможно, захотите использовать PREG_SET_ORDER для создания группы массивов $matches по совпадениям вместо значения по умолчанию PREG_PATTERN_ORDER, которое группирует результирующий массив на основе групп захвата в шаблоне (в документации есть примеры).

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-файл).

0 голосов
/ 05 октября 2010

try:

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

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

Второй аргумент должен быть массивом.вместо циклического поиска совпадений (массива) и добавления их по одному за раз, просто пропустите весь массив совпадений ($matches[0])

...