Page 1 sur 2
Lire fichier zippé
Posté : 25 mai 2010, 15:58
par pepyte
Bonjour a tous.
Une petite question pour les personnes qui auraient l'amabilité de me répondre. ^^.
J'ai un fichier CSV zippé que je souhaiterai lire via un script php. Est-il possible de lire ligne par ligne ce dernier afin de traiter son contenu?
Ou est-on obligé de le décompresser et de le lire une fois décompressé?
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:03
par stealth35
les 2

ligne par ligne tout en le décompressant
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:16
par pepyte
Donc il faut ouvrir le zip, mais ensuite comment lire les données?
Pour le moment il y a quelque chose du genre.
// ouverture du fichier zip
$zip = zip_open("Mon fichier zip");
// et la je le lis mais comment récuperer les ligne?
$fichier = zip_read($zip);
Je ne peux pas faire un
while ($tab = fgetcsv ($fichier, 1500, ";"))
directement
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:19
par stealth35
Je ne peux pas faire un
while ($tab = fgetcsv ($fichier, 1500, ";"))
directement
si via le wrapper zlib
while ($tab = fgetcsv ("compress.zlib://$fichier", 1500, ";"))
mais je te conseil SplFileObject pour lire tes csv, c'est plus simple et plus rapide
$file = new SplFileObject("compress.zlib://$fichier");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(';');
foreach ($file as $row)
{
print_r($row);
}
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:23
par pepyte
Et pour les différentes données ("case") du fichier c'est un truk du style
print $row[0]
...
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:28
par stealth35
ouai c'est pareil après dans ta boucle
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:31
par pepyte
Il ne connait pas ça
while ($tab = fgetcsv ("compress.zlib://$fichier", 1500, ";"))
Message d'erreur :
Warning: fopen(compress.zlib://Resource id #5):
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:34
par stealth35
Il ne connait pas ça
while ($tab = fgetcsv ("compress.zlib://$fichier", 1500, ";"))
Message d'erreur :
Warning: fopen(compress.zlib://Resource id #5):
fais un
print_r(stream_get_wrappers());
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:39
par pepyte
fais un
print_r(stream_get_wrappers());
[/quote]
Ca m'affiche
Array
(
[0] => php
[1] => file
[2] => glob
[3] => data
[4] => http
[5] => ftp
[6] => zip
[7] => compress.zlib
[8] => phar
)
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:42
par stealth35
c'est parce c'est dans le fopen qui faut le faire le compress

Re: Lire fichier zippé
Posté : 25 mai 2010, 16:44
par pepyte
J'ai fait ça
$var = stream_get_wrappers();
$flect = fopen($var[7]."\\".$fichier,"r");
Mais toujours la meme erreur
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:46
par stealth35
montre tout
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:49
par pepyte
Pour le moment je fais juste un test donc j'ai :
$file = 'D:\Brian\\GLobal_EET\\Global_EET.zip';
$date=date("d-m-Y", filemtime($file));
if (file_exists($file) && $date == date("d-m-Y"))
{
$file = zip_open("D:\Brian\\GLobal_EET\\Global_EET.zip");
$fichier = zip_read($file);
if ($fichier)
{
$var = stream_get_wrappers();
$flect = fopen($var[7]."\\".$fichier,"r");
echo fgetcsv($flect, 1500, ";");
zip_close($file);
}
}
else
echo 'Pas de nouveau fichier\n';
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:53
par stealth35
oula t'as tout mélangé la, comment s'appelle ton fichier a l'intérieur du zip ?
Re: Lire fichier zippé
Posté : 25 mai 2010, 16:55
par pepyte
Global_EET.csv