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 :

Rechercher nombre d'occurences d'une chaine dans plusieurs fichiers


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de charlene44
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 87
    Points : 67
    Points
    67
    Par défaut Rechercher nombre d'occurences d'une chaine dans plusieurs fichiers
    Bonjour,

    Depuis quelques jours je réfléchi à un petit problème que j'ai au niveau de mon projet PHP et je suis à court d'idées, donc si pour vous ca fait tilt! n'hésitez pas à me faire part de vos idées.

    En résumé, j'ai un projet composé de fichiers .php, des templates .tpl, et du JS. en paralelle de ces fichiers j'ai un fichier xml pour stocker mes ressources (traductions) composés d'un identifiant et d'une valeur ou plusieurs valeurs.

    J'ai besoin de réaliser une étude pour savoir combien quelle proportion de ces ressources XML sont le plus utilisées dans le projet, en gros de compter le nombre d'appels pour chaque ressource.

    J'ai sorti la liste d'identifiants de mon fichier XML dans un fichier Excel.

    Mon problème étant que je ne vois absolument pas comment parcourir mes fichiers et compter le nombre de fois ou le système trouve cet identifiant dans les fichiers. Je peux le faire à la main en ouvrant tous les fichiers avec notepad++ en les recherchant 1 par 1 mais j'ai 1400 ressources ca risque d'être un peu long.

    Auriez-vous une idée pour parcourir des fichiers, compter le nombre d'occurence d'une chaine, l'inscrire quelque part et recommencer le processus pour chaque identifiant et ce de façon automatique?

    Cela peut très bien ne pas être en PHP, je suis ouverte à toute suggestion. j'avais pensé à un script mais je n'en ai jamais fait je ne sais même pas si cela est possible.

    Merci

  2. #2
    Membre éclairé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Points : 862
    Points
    862
    Par défaut
    Bonjour,

    Cela doit pouvoir se faire simplement en suivant la logiciel suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Ouvrir ton répertoire racine (opendir)
    Pour chaque identifiant
         compteur = 0
         Parcourir tous les répertoires et sous-répertoires de la racine (fonction récursive qui reçoit en paramètre ton compteur et identifiant et te renvoi le compteur incrémenter)
                 Pour chaque fichier trouver, l'ouvrir et récupérer le texte dans une variable (fread)
                        Rechercher toutes les occurences de ton identifiant dans cette variable
                Fin Pour
    Fin Pour
    Voilà, après, tu peux coder ceux-ci dans n'importe quel langage, php, C#, c++, java, ...

    doudouallemand
    développeur en folie cherche à ... développer encore plus

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 71
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Considérons que ton fichier xml est de cette forme :

    liste_identifiants.xml
    <ressouce1>
    <identifiant>toto</identifiant>
    <valeur>12</valeur>
    </ressouce1>

    <ressouce2>
    <identifiant>titi</identifiant>
    <valeur>9</valeur>
    </ressouce2>

    <ressouce3>
    <identifiant>tutu</identifiant>
    <valeur>16</valeur>
    </ressouce3>
    L'algo + les fonctions que j'utiliserais :

    _ charges ton fichier xml (reportes toi à la librairie DomDocument) et récupères tes identifiants dans un tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $doc = new DomDocument()
    $doc->LoadFile("liste_identifiants.xml");
    $tabIdentifiants = $doc->getElementsByTagName("identifiant");
    _ parcours les fichiers (php, tpl, js) de ton répertoire avec opendir, readdir et closedir

    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
     
    //Voici un exemple de code utilisant ces fonctions et trouvé ici http://php.net/manual/fr/function.opendir.php
    <?php
    $dir = "*.*";
     
    // Ouvre un dossier bien connu, et liste tous les fichiers
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                echo "fichier : $file : type : " . filetype($dir . $file) . "\n";
            }
            closedir($dh);
        }
    }
    ?>

    _ charges dans une chaine le contenu du fichier actuellement parcouru avec file_get_contents()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenuFichier = file_get_contents($file);
    _ parcours tes identifiants (donc ton tableau $tabIdentifiants)

    _ comptes le nombre d'occurrences dans ton fichier de l'identifiant parcouru avec substr_count()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbOccurences = substr_count($contenuFichier , $identifiant);
    _ stockes le nombre d'occurences trouvé dans un tableau multidimensionnel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tabOccurences[$identifiant] = $tabOccurences[$identifiant]+$nbOccurences;
    _ Et enfin, écris ton tableau multidimensionnel dans un fichier de statistiques

  4. #4
    Membre du Club Avatar de charlene44
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 87
    Points : 67
    Points
    67
    Par défaut
    merci beaucoup pour votre aide.

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

Discussions similaires

  1. Compter le nombre d'occurences d'une chaine dans un texte
    Par tim91700 dans le forum Débuter
    Réponses: 5
    Dernier message: 02/04/2011, 16h27
  2. Réponses: 0
    Dernier message: 13/02/2011, 17h36
  3. Réponses: 2
    Dernier message: 12/02/2007, 16h52
  4. Réponses: 4
    Dernier message: 16/12/2005, 19h36
  5. Comment rechercher une chaine dans plusieurs tables ?
    Par tsing dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/11/2005, 18h04

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