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

PHP & Base de données Discussion :

Comment parser le contenu de mon fichier texte ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Par défaut Comment parser le contenu de mon fichier texte ?
    bonjour
    j'ai un fichier txt du type suivants (nombre de lignes aléatoire):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Flow:carriere:RETYUIOPZ
    Flow:symbole:/CHTERTUIOPZTEYD
    Flow:toto:pikashu
    Flow2:carriere:BLABLABLA
    Flow2:symbole:/AZERTYUIOPAAA
    Flow2:toto:pika
    je souhaiterai parser le fichier et inclure le resultat dasn un tableau.

    le resultat devras ressembler a sa

    nom Carriere Symbole toto
    Flow RETYUIOPZ /CHTERTUIOPZTEYD pikashu
    Flow2 BLABLABLA /AZERTYUIOPAAA pika


    .......

    je sais pas faire je pense qu'il faut utiliser une regex mais je suis débutant. si quelqu'un pouvais m'aider sa serai sympa.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Utilise fgetcsv en définissant le délimiteur à ":".

    Quelque chose comme ca (non testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(($handle = fopen('fichier.txt', 'r')) !== false)
    {
        while(($data = fgetcsv($handle,0,":")) !== false)
        {
            //Faire quelque chose avec $data
        }
        fclose($handle);
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour la récupération des données, ta structure est bizarre : c'est <nom>:<colonne>:<valeur> , c'est ça ? En supposant que le nom soit unique, tu peux faire un tableau indexé par le nom.
    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(($handle = fopen('fichier.txt', 'r')) !== false)
    {
        $tab = [];
        while(($data = fgetcsv($handle,0,":")) !== false)
        {
            list($nom, $colonne, $valeur) = $data;
            $tab[$nom][$colonne] = $valeur;
        }
        fclose($handle);
    }

    Pour l'affichage du tableau, tu peux regarder du côté de ce tuto : Affichage de données dans un tableau HTML
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Par défaut
    Oui sais nom colonne valeur
    Mais le nom peut être identique avec des colonnes et valeur differentes. Le seul point commun est le nom qui commence par flowavec des chiffres ou pas derrière

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Par défaut
    Celira j'ai suivi ta methode. Cela marche partiellement.

    Quand je fait un var_dump($tab); cela affiche mon tableau après pour l affichage je fait

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Foreach (&tab as &row) {
         Echo '<tbody>
              <tr>
                  <td>'.$row['carrier'].'</td>
                 <td>'.$row['symbo'].'</td>
                 <td>'.$row['toto'].'</td>
     </tr>
     </tbody>'
    Sa affiche bien les données sauf pour le nom je sais pas quoi mettre. Je fais

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                  <td>'.$row['0'].'</td>
    Mais j'ai un message d'erreur

    Undefined offset :0

    Quand je fais

    var_dump($row); ma "colonne" nom n'apparaît pas

  6. #6
    Invité
    Invité(e)
    Par défaut
    1- Selon le code de Celira :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
       echo '<tbody>' . "\n";
    foreach ($tab as $nom => $row)
    {
       echo '   <tr>' . "\n";
       echo '      <td>'.$nom.'</td>' . "\n";
       foreach ($row as $colonne => $valeur)
       {
          echo '      <td>'.$valeur.'</td>' . "\n";
       }
       echo '   </tr>' . "\n";
    }
       echo '</tbody>' . "\n";
    2- Cela dit, la structure de ton fichier texte n'est pas "classique".
    Une structure plus classique serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nom:carriere:symbole:toto
    Flow:RETYUIOPZ:/CHTERTUIOPZTEYD:pikashu
    Flow2:BLABLABLA:/AZERTYUIOPAAA:pika
    ..........
    • La 1ere ligne donne les noms des colonnes (on la traite à part, pour créer les titres du <thead>)
    • Les suivantes sont les valeurs pour chaque <tr> du <tbody>

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if(($handle = fopen('fichier.txt', 'r')) !== false)
    {
        // 1ere ligne : les titres
        if(($data = fgetcsv($handle,0,":")) !== false)
        {
            $titres = $data; // array
        }
        // lignes suivantes : les valeurs, pour chaque rangée 
        $rows = []; // array
        while(($data = fgetcsv($handle,0,":")) !== false)
        {
            $rows[] = $data; // array
        }
        fclose($handle);
    }
    Affichage
    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
     
    <table>
     
     <thead>
       <tr>
    <?php   foreach ($titres as $nom){ ?>
          <th><?php echo $nom ?></th>
    <?php   } ?>
       </tr>
     </thead>
     
     <tbody>
    <?php foreach ($rows as $row){ ?>
       <tr>
    <?php   foreach ($row as $valeur){ ?>
          <td><?php echo $valeur;  ?></td>
    <?php   } ?>
       </tr>
    <?php } ?>
     </tbody>
     
    </table>
    Dernière modification par Invité ; 15/06/2018 à 10h13.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/05/2014, 16h56
  2. Comment lire le contenu d'un fichier texte?
    Par millien dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 25/05/2009, 12h52
  3. Réponses: 3
    Dernier message: 19/05/2009, 09h00
  4. Réponses: 3
    Dernier message: 19/05/2006, 11h35
  5. Comment récupérer le contenu de plusieurs fichiers textes ?
    Par calimero2611 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 15h45

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