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 :

Analyser un fichier texte


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Analyser un fichier texte
    Bonjour à tous,

    Je sèche sur un problème de parsing de données sur un fichier .txt
    Le problème est le suivant : le fichier .txt accepte tous les symbôles, y compris les accents, mais est allergique aux ' ( & =
    De plus, j'aimerais que mon fichier .txt prenne en compte les retours chariot introduits dans le textarea.

    A vrais dire, je ne sais pas très bien par où commencer pour résoudre ce problème. Headings? charset? function br2nl? regex?

    Si vous avez une piste, je suis preneur

    Voici ma bidouille :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
    # variables
    $username = $Firstname = $Description = "";
    $data = array();
    $changed = true;
     
    # chemin du fichier txt
    $myTextFile = 'data.txt';
     
    # donne les datas du fichier
    if (file_exists($myTextFile))
            $data = parse_ini_file($myTextFile, true);
     
    # vérifie l'ID principale (ici userdata)
    if (isset($_POST['userdata'])) {
     
    # ajoute ou écrase les datas
            $data[$_POST['username']]['Firstname'] = $_POST['Firstname'];
            $data[$_POST['username']]['Description'] = $_POST['Description'];
    		$changed = true;
    }
     
    # efface de la liste
    if (isset($_GET['delid'])) {
        unset($data[$_GET['delid']]);
        $changed = true;
    }
     
    # édite
    if (isset($_GET['changeid'])) {
            # fait apparaitre l'édition dans les champs du formulaire
            $username = $_GET['changeid'];
            $Firstname = $data[$username]['Firstname'];
            $Description = $data[$username]['Description'];
    }
     
    if ($changed) {
        # crée une nouvelle entrée
        $fp = fopen($myTextFile, 'w');
        ksort($data);
        foreach ($data as $key=>$dataArray) {
                 fwrite($fp, "[$key]\n");
                 foreach ($dataArray as $k => $v) {
                          fwrite($fp, "$k=$v\n");
                 }
                 fwrite($fp, "\n");
        }
        fclose($fp);
    }
     
    # liste
    function listData($data) {
             if (count($data) > 0) {
                 echo "<TABLE border='0' cellspacing='1' cellpadding='2'>\n";
                 # headings
                 echo "<tr style='background: #C0C0C0'><th>User name</th>";
                 list ( $key, $dataArray) = each($data);
                 foreach($dataArray as $k=>$v) {
                         echo "<th>$k</th>";
                 }
                 echo "<th>Del</th></tr>";
     
                 #data et couleur des lignes
                 $i = 0;
                 foreach ($data as $key=>$dataArray) {
                         $bg = ++$i % 2 ? "#FFFFFF" : "#EEEEEE";
                         echo "<tr style='background: $bg'>
                                <td>
                                <a href='$_SERVER[PHP_SELF]?changeid=$key'>$key<a>
                                </td>";
                         foreach ($dataArray as $v) {
                                   echo "<td>$v</td>";
                         }
                         echo "<td>[<a href='$_SERVER[PHP_SELF]?delid=$key'>X<a>]</td></tr>";
                }
                echo "</TABLE>";
            }
            else echo "<p>No data</p>";
    }
    ?>
     
    <html>
    <META http-equiv="Content-Type" content="text/html; charset=iso-UFT-8">
    <body>
    <FORM  method="POST" action="<?php echo $_SERVER['PHP_SELF']?>">
    <INPUT TYPE="HIDDEN"  name="userdata" value="1">
    <?php
    if (!empty($username))
         echo "<INPUT TYPE=\"HIDDEN\"  name=\"username\" value=\"$username\">";
    ?>
    <p>User name
      <input type="TEXT"  name="username" size="10" maxlength="10" value='<?php echo $username ?>'>
     
        <br>
      First name    
      <input type="TEXT"  name="Firstname" size="20" maxlength="20" value='<?php echo $Firstname ?>'>
      <br>
      Description    
      <textarea name="Description" cols="20" rows="3"><?php echo stripslashes($Description) ?></textarea>
    </p>
    <p>
      <input type="SUBMIT"  value="Send data">
      <?php
        if (!empty($username))
             echo "<INPUT TYPE=\"BUTTON\"  value=\"Cancel\"   onClick=\"history.go(-1);\">";
        ?>
    </p>
    </FORM>
     
    <?php
         # liste les entrés
         if (!isset($_GET['changeid'])) {
              listData($data);
         }
    ?>
    </body>
    </html>

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    hmmm je comprends pas bien... tu parles de parser un .txt ensuite tu dis que tu aimerais que ton .txt accepte les retours à la ligne d'un textarea... donc au final ça va d'où à où ?

    Quoi qu'il en soit un fichier texte à la même comportement qu'un textarea : \n signifie dans les 2 cas un retour à la ligne

  3. #3
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour Darkstar,
    Merci pour ta réponse.

    Je m'explique : J'ai 2 fichiers. Le formulaire php ci-dessus récupère les données introduites dans les champs et les textarea pour les stocker dans un simple fichier texte (Flat file).

    Ce même formulaire php liste les données introduites. Jusque là, aucun soucis.

    En cliquant sur un ID de la liste, le formulaire reprend les données du fichier texte et les affichent dans les champs et textarea.
    Je peut alors les modifier et re-sauver. La liste se met à jour et ainsi de suite.

    Malheureusement, mon textarea n'accepte pas de retour à la ligne (qu'il transforme en simple espace), les symbôles "' & ( ou encore = " court-circuite l'écriture de mon fichier .txt
    Je ne peut raisonablement pas demander à mes clients d'introduire /n pour faire un retour à la ligne.
    Visiblement, ce sont des symboles propres à PHP et le formulaire ne sait plus quoi afficher puisqu'il ne sait plus quand commence ou fini une commande.

    Ma question est donc: y a-t-il moyen de scinder les données introduites dans les champs et textarea du code php proprement-dit.
    Si oui, que manque t'il ?

    Merci à toi.

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    heuuu ben disons que si toi même tu court-circuite le textarea pour transformer les retours à la ligne en espace... alors seule l'intervention du saint-esprit peut te sauver

  5. #5
    Candidat au Club
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    OK, merci.
    Je me met en quête du Graal.

    Non, sérieusement, je pense chercher du côté des htmlentities, peut-être une piste ?

Discussions similaires

  1. Analyser un fichier texte
    Par shada dans le forum Langage
    Réponses: 2
    Dernier message: 13/05/2009, 15h16
  2. Analyser un fichier texte
    Par pissco dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2009, 16h29
  3. analyser une fichier texte
    Par julien.63 dans le forum Langage
    Réponses: 2
    Dernier message: 21/06/2006, 20h16
  4. analyse de fichier texte
    Par poutine dans le forum C++
    Réponses: 7
    Dernier message: 26/04/2006, 23h43
  5. Analyse de fichier texte
    Par beb30 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 14/04/2006, 17h06

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