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 :

Récupérer des données d'un fichier texte


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Récupérer des données d'un fichier texte
    Bonjour. Je suis actuellement en stage et débutant en php.
    Mon problème consiste a la récupération de données contenues dans un fichier texte au préalable ouvert avec la fonction .
    J'ai ensuite du parser le fichier en y ajoutant des délimiteurs pour n'afficher que ce qui m'intéresse. A présent que j'ai mon fichier il faudrait que je puisse récupérer les informations qui me permettront de faire mon graphique ( en camembert dans un premier temps)de statistiques.
    J'aurais voulu savoir si quelqu'un aurait une piste pour moi.
    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 322
    Points : 15 665
    Points
    15 665
    Par défaut
    montre nous le code que tu as et ce que tu as déjà essayé même si ça ne fonctionne pas

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Voila le début de mon 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
    <?
     
    $tableau = file('C:\Users\Christian\Desktop\Nouveau dossier');
    $affichage=0;
    foreach( $tableau as $ligne)
    {
            if($ligne=="Détail des transferts :\n")
            {
                    $affichage=1;
            }
            elseif($ligne=="Statistiques depuis le démarrage de la
    passerelle :\n"             or
    $ligne=="---------------------------------------------------\n")
            {
                    $affichage=0;
            }
            if($affichage==1)
            {
                    echo "$ligne<br>";
            }
    }
    Cette partie me permet de trier mon fichier contenu dans un tableau et de n'y afficher que ce qui m'intéresse.

    Le fichier de sorti est le suivant:

    Détail des transferts :
    552 Messages rejetés par l'anti-spam : 15475 (37.92% des mails reçus)
    500 Unrecognized command : 8493 (20.81% des mails reçus)
    550 invalid recipient : 6919 (16.96% des mails reçus)
    250 Messages correctement transmis à labs : 6454 (15.82% des mails reçus)
    --- Connexion cassée (pas d'erreur) : 2526 ( 6.19% des mails reçus)
    503 RCPT first : 508 ( 1.24% des mails reçus)
    451 Unable to queue message () : 297 ( 0.73% des mails reçus)
    451 Incomplete DATA : 70 ( 0.17% des mails reçus)
    451 Connexion à labs temporairement indisponible : 55 ( 0.13% des mails
    reçus)
    550 Relaying denied (#5.7.1) : 6 ( 0.01% des mails reçus)
    501 helo requires domain/address - see RFC-2821 4.1.1.1 : 1 ( 0.00% des
    mails reçus)
    503 please say hello first ... : 1 ( 0.00% des mails reçus)
    503 but you already said HELO ... : 1 ( 0.00% des mails reçus)
    503 MAIL first : 1 ( 0.00% des mails reçus)
    503 Use MAIL before RCPT : 1 ( 0.00% des mails reçus)
    Nombre de processus minimum occupés : 0/100
    Nombre de processus maximum occupés : 34/100
    Traitement de EarlyTalker : 0 détectés Spam sur les 984 mails parlant
    avant la bannière,
    et 983 mails parlant avant la bannière ont cassé connexion.

    Mon but est a présent de pouvoir séparer chaque ligne qui pourrait être contenue dans un tableau a 2 dimensions. La première pour le code d'erreur (par ex: 552 Messages rejetés par l'anti-spam) et pour l'autre dimension le nombre ou bien le pourcentage.

    Je sais que pour faire cela la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    explode("mon_delimiteur", ma_variable);
    Mais mon probleme est de ne pas arriver a faire cela dans le traitement de mon fichier. J'aurais donc voulu savoir si vous n'auriez pas une petite piste pour moi.
    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Avec preg_match_all

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    preg_match_all('#(?<=\n|^)(\d{3}[^:]+): (\d+) \( *([0-9.]+%)#', $fichier, $sortie, PREG_SET_ORDER);
     
    foreach( $sortie as $val )
      echo "<b>Message:</b> {$val[1]} <b>Total:</b> {$val[2]} <b>Pourcentage:</b> {$val[3]}<br>";
    $fichier est le contenu du fichier (file_get_contents())

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 18
    Points : 9
    Points
    9
    Par défaut Probleme résolu
    Merci du conseil.
    Sinon j'ai essayé une autre méthode qui marche assez bien.
    Voici le 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <html>
    <head>
    <title></title>
    </head><body>
    <pre>
    <?
    $tableau = file('/var/www/28-06-07.txt');
    $affichage=0;
     
    $codeErreur=array();
    echo "1ere partie du stage ==> Remplissage du tableau\n\n";
    foreach($tableau as $ligne)
    {
            if($ligne=="Détail des transferts :\n")
            {
                    $affichage=1;
                    continue;
            }
            elseif(stristr($ligne,'Nombre de processus minimum occupés :'))
            {
                    $affichage=0;
    }
            elseif($ligne=="Statistiques depuis le démarrage de la
    passerelle :\n"   
                   or
    $ligne=="---------------------------------------------------\n")
            {
                    $affichage=0;
            }
            if($affichage==1)
            {
                    //echo "<br>$ligne";
                    list($cle,$tmp)=explode(": ",$ligne);
                    list($valeur)=explode(" (",$tmp);
                    $codeErreur["$cle"]=$valeur;
     
            }
    }
    print_r($codeErreur);
    ?>
    </pre>
    </body>
    </html>
    J'ai a présent mon résultat stocker dans un tableau et il sera beaucoup plus simple par la suite de le réutiliser pour faire mon graphique.

    encore merci

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

Discussions similaires

  1. [XL-2013] Récupérer des données dans un fichier text rangé en colonne et les exporter dans excel
    Par kikimarabou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2015, 13h08
  2. Récupérer des données dans un fichiers texte
    Par pitizone dans le forum Word
    Réponses: 1
    Dernier message: 10/04/2014, 15h49
  3. Récupérer des données d'un fichier texte
    Par neutrall dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 30/05/2011, 01h40
  4. Récupérer des données dans un fichier texte a part.
    Par morora69 dans le forum Général JavaScript
    Réponses: 40
    Dernier message: 17/06/2010, 09h54
  5. Réponses: 2
    Dernier message: 16/01/2006, 19h34

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