2010-10-05 45 views
0

Je suis en train d'exporter les matchs de preg_match_all à un fichier csv, mais je reçois l'erreur suivante:Export preg_match_all correspond au fichier csv

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

Ceci est la section du code que je vais avoir des problèmes avec, comment puis-je le modifier afin que je puisse exporter les correspondances vers un fichier csv?

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

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

'$ data' ne semble pas être un tableau. Devrait-il en être un? –

+0

Oui, ça devrait être un tableau, c'est le problème que j'ai, j'ai besoin de faire une boucle sur chaque élément du tableau et de l'ajouter au fichier csv et je suis trop noob pour le comprendre moi-même. –

Répondre

0

essayer:

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

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

Le second argument doit être un tableau. au lieu de boucle à travers les matchs (un tableau) et les ajouter un à la fois, tout simplement passer le tableau complet des matchs ($matches[0])

+0

C'est une solution que j'avais déjà essayée, mais ça ne marche pas non plus. Tout ce que je reçois est un fichier csv vide. –

0

Sans connaître la structure de votre chaîne ou l'expression régulière, c'est juste une conjecture mais il semble que vous souhaitiez utiliser PREG_SET_ORDER pour que le groupe de tableaux $matches corresponde aux correspondances, plutôt que le PREG_PATTERN_ORDER par défaut qui regroupe le tableau résultant en fonction des groupes de capture du modèle (les exemples 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); 
} 

Si ce n'est pas ce que vous êtes après, plus d'informations est nécessaire de vous comme la structure du tableau $matches que vous voulez, et/ou l'entrée ($subject) et les résultats escomptés (un exemple de Fichier CSV).