Modérateur PHPfrance |
8758 Messages
21 juil. 2014, 11:15
salut,
le plus simple c'est d'utiliser la fonction file (attention a la taille du fichier quand même).
dans ce cas un simple remplace sur la ligne (bien sur un faut faire attention au séparateur de champ et sauf de ligne) suffit.
pour mettre le contenu du tableau dans le fichier file_put_contents + implode
sinon pour ton code :
- tu ouvre le fichier destination à chaque ligne d'origine sans fermer ça doit pas être jolie en mémoire, voir même cela peux apporter des conflit (qui te posent peux ête problème ici.
tu n'ajoute pas de saut de saut
il faut ouvrir la ressource pour le fichier source, ouvrir celle du fichier cible et ensuite les utiliser.
je ferais quelque chose dans ce goût la
<?php
define('DEBUG', true);
$cible = fopen('fichiercible.csv', 'a');
flock($cible, LOCK_EX);
if (($source = fopen("STRAX2014.csv", "r")) !== false) {
while (($data = fgetcsv($source, 10000, ";")) !== false) {
$final = [];
foreach ($data as $i => $value) {
if ($value == "AEGIS") {
$final[$i] = "Aegis";
}else {
$final[$i] = $value;
}
// histoire de pas polluer l'affichage si pas besoin
if (DEBUG) {
echo $data[$i] . "<br />\n";
}
}
// insertion dans le nouveau fichier
fputcsv($fp, $final);
}
fclose($source);
}
flock($cible, LOCK_UN);
fclose($cible);
Après il faut voir la taille des fichiers qui seront traité parce que je pense que l'on peux faire beaucoup plus simple
<?php
$source = 'STRAX2014.csv';
$cible = 'lefichierfinal.csv';
$content = file_get_contents($source);
$tabPattern = ['AEGIS', 'AUTRE', 'CHOSE'];
$tabreplace = ['Aegis', 'Autre', 'Chose'];
$withReplace = str_replace($tabPattern, $tabreplace, $content);
file_put_contents($cible, $withReplace);
je te laisse regarder la doc des fonctions utilisées afin de comprendre ce qui est fait.
@+
Il en faut peu pour être heureux ......