IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lire le contenu d'une archive ZIP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Par défaut Lire le contenu d'une archive ZIP
    Bonjour à tous,

    Après plusieurs recherches et de nombreux essais, je viens vous demander de l'aide.
    Je dois réaliser un script qui parcourt tous les dossiers d'une arborescence dans le but de trouver les fichiers ZIP qui se trouvent dans les dossiers. Une fois que j'ai trouvé ces fichiers ZIP, je dois lire le fichier XML qui se trouve dans chaque ZIP pour en extraire certaines balises.
    Mon problème n'est pas de parcourir l'arborescence ni d'extraire certaines balises des fichiers XML mais juste d'ouvrir les fichiers ZIP et de lire le fichier qui s'y trouve.

    Est-ce que quelqu'un aurait des pistes de recherches ou pourrait m'aider svp ? Y a-t-il quelque chose à modifier dans le fichier php.ini (j'ai décommenté la ligne "extension=php_zip.dll") ?

    Merci beaucoup.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Par défaut
    Merci pour ce lien mais je ne comprends pas trop en quoi il peut permettre de lire le fichier contenu dans le ZIP.
    Est-ce qu'il faut ajouter une fonction fread ou ReadFile ou quelque chose du style ?
    Merci en tout cas

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Une fois que tu as ton fichier tu le manipules avec DOM ou SimpleXML.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 114
    Par défaut
    Alors j'ai testé ceci :

    - ouverture de l'archive
    - recherche d'une balise
    - fermeture de l'archive
    Ce qui me donne ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
       $zip = new ZipArchive(); 
        // On ouvre l'archive
        if($zip->open('zip.zip') == TRUE)
    	{
    		if($zip1 = $zip->open('zip.zip', ZipArchive::CREATE) === TRUE)
    		{
    			echo 'Zip ouvert';
     
    			    //On charge le fichier.
     			    $dom = new DomDocument;
    			    $zip1->load('test.xml');
    				//On repère les balises string.
    				$listestring = $dom->getElementsByTagName('string');
    				//On parcourt chaque balise string.
    				foreach($listestring as $string) 
    				{ 
    					//On cherche les attributs level des balises c.
    					$level = $string->getAttribute("CONTENT");
     
    					echo $level->firstChild->nodeValue;
    				}
     
    			$zip->close();
    		 }
            else
            {
    			echo 'Impossible d'ouvrir &quot;Zip.zip&quot;';
    		} 
    	}
    ?>
    Sauf que j'obtiens l'erreur suivante (le ZIP s'ouvre bien) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to a member function load() on a non-object in C:\wamp\www\xmlzip\zip.php on line 14
    Je pense que je n'ai pas tout compris

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as oublié de recuperer le fichier dans le zip et tu utilises $zip1 au lieu de $dom.

    Ca devrait fonctionner comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo 'Zip ouvert';
    $xml_file = $zip->getFromName('test.xml');
    $dom = new DomDocument;
    $dom->loadXML($zip);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire le contenu d'une archive tar d'une cartouche
    Par AAWOOPY56 dans le forum AIX
    Réponses: 4
    Dernier message: 16/12/2010, 16h28
  2. lire le contenu d'une fichier .Dat
    Par zidenne dans le forum Delphi
    Réponses: 10
    Dernier message: 28/07/2006, 12h27
  3. [Débutant]Comment lire le contenu d'une Listview ?
    Par PierreBord dans le forum Composants VCL
    Réponses: 2
    Dernier message: 13/02/2006, 16h40
  4. Lire le contenu d'une page web grâce à un script PHP
    Par BloodyImp dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2005, 22h29
  5. [C#] [WinForms] Lecture d'un fichier dans une archive ZIP
    Par aegypius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2004, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo