2010-02-28 3 views
1

Je veux analyser, traiter et remplacer seulement 1 colonne spécifique dans un fichier csv, je suis bien avec les deux premières étapes, mais j'ai des problèmes avec le troisième. Voici ce que j'ai jusqu'à présent:colonne d'écrasement avec fputcsv

<?php 
$fh = fopen("data.csv", "r"); 
$row = 1; 
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) { 
$get = $data[2]; 
$uc = ucwords(strtoupper($get)); 
echo $uc; 
} 
?> 

qui affiche bien, je dois juste le contenu traité à écrire de nouveau dans c'est la colonne d'origine. Je sais que cela se fait avec fputcsv, mais je ne peux pas sembler le faire fonctionner:

$fp = fopen('data.csv', 'w'); 
fputcsv($fp, $uc, ","); 
fclose($fp); 

qui vient efface le fichier entier. Même chose lors de l'utilisation de fwrite. Des idées?

Merci.

Répondre

1

Veuillez noter que les deux fonctions fonctionnent pour lines, pas pour le fichier entier.

Alors vous devrez reconstruire quand vous écrivez, quelque chose comme:

<?php 
$list = array (
    'aaa,bbb,ccc,dddd', 
    '123,456,789', 
    '"aaa","bbb"' 
); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $line) { 
    fputcsv($fp, split(',', $line)); 
} 

fclose($fp); 
?> 

Untested

<?php 
$fh = fopen("data.csv", "r"); 
$row = 1; 
$list=array(); 
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) { 
    $data[2] = ucwords(strtoupper($data[2])); 
    $list[]=$data; // collect lines 
} 
fclose($fh); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $line) { 
    fputcsv($fp, $line); 
} 

fclose($fp); 
?> 
+0

Merci, a parfaitement fonctionné! :) –

Questions connexes