2010-11-08 25 views
1

En utilisant PHP, j'exporte les résultats d'une requête au format CSV. Mon problème vient quand les données contiennent l'accent; ils ne sont pas exportés correctement et je les perds tous dans le fichier généré.Convertir les données pour conserver les accents avant d'exporter au format CSV

J'ai utilisé la fonction utf8_decode() pour convertir manuellement les en-têtes et cela a fonctionné parfaitement, mais je ne sais pas comment l'utiliser pour le tableau des résultats.

Toute personne peut m'aider s'il vous plaît !?

result = db_query($sql); 
if (!$result) die('Couldn\'t fetch records'); 

$fp = fopen('php://output', 'w'); 
if ($fp && $result) { 
header("Content-type: application/vnd.ms-excel; charset=UTF-8"); 
header('Content-Disposition: attachment; filename="adp_enigmes_data.csv"'); 
header('Pragma: no-cache'); 
header('Expires: 0'); 
fputcsv($fp, $headerTitles); 

while ($row = $result->fetch_array(MYSQLI_NUM)) { 
    // When I use utf8_decode here, I don't get any results, so I have 
     // no idea where to use it! 
     fputcsv($fp, utf8_decode(array_values($row)), ',', '"'); 
} 
die; 
} 

Répondre

12

Appliquer utf8_decode à tous les éléments en ligne de résultat, donc simplement array_map:

fputcsv($fp, array_map('utf8_decode',array_values($row)), ',', '"'); 
+0

wow homme merci beaucoup, fonctionne parfaitement! –

+0

Juste ce dont j'avais besoin. – dchayka