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 un fichier txt contenant des sauts de ligne


Sujet :

Langage PHP

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Lire un fichier txt contenant des sauts de ligne
    Bonsoir,

    Je dois lire un fichier txt avec tabulation que l'on vient de me fournir.

    Jusque là pas de problème. Je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $file = fopen($fileinput,"r"); 
     
            while (!feof($file)) {
              $ligne = fgets($file, 4096); 
              ... traitement de ma ligne....
            }
    Mais j'ai un gros problème.

    Le fichier txt que l'on m'a fourni contient dans certaine colonne un texte qui lui même contient des sauts de ligne.

    Résultat dans certains cas une ligne se retrouve sur 2 voir plus de ligne.

    Est-il possible de palier à ce genre de problème ou dois-je redemander le fichier d'origine qui est une extraction d'une base Access ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est un CSV utilise fgetcsv, ou SplFileObject

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci, mais ce n'est pas un CSV

  4. #4
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    SplFileObject prend ligne par ligne et coupe les textes en fonction des sauts de lignes qui sont inclus

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par lodan Voir le message
    Merci, mais ce n'est pas un CSV
    fichier tabulé = CSV
    donc met l'option pour SplFileObject ou fgetcsv

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 387
    Points
    9 387
    Par défaut
    Ou pour éclaircir les propos de Stealth35, c'est un format CSV (et ce quelque soit l'extension que tu peux donner au fichier, on s'en fiche - c'est la structure des données qui compte).

    http://en.wikipedia.org/wiki/Comma-separated_values

  7. #7
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci beaucoup c'est un très bon rappel, j'avais complètement zappé cet aspect.

  8. #8
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    ça ne règle pas mon problème de caractère de retour dans la colonne texte pour autant. Je n'ai aucun " dans ce fichier permettant de délimiter ce qui est texte.

    Je teste le caractère Chr(9) pour la tabulation.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par lodan Voir le message
    ça ne règle pas mon problème de caractère de retour dans la colonne texte pour autant. Je n'ai aucun " dans ce fichier permettant de délimiter ce qui est texte.

    Je teste le caractère Chr(9) pour la tabulation.
    montre ton code et un bout de ton fichier source

  10. #10
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Mon code partiel

    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
     
    $separateur = Chr(9);
    if(file_exists($fileinput))
    	{
     
            if (($handle = fopen($fileinput, "r")) !== FALSE) 
            {
                while (($data = fgetcsv($handle, 1000, $separateur)) !== FALSE) 
                {
     
                                $queryString = "INSERT INTO ......
     
    }
    }
     
            fclose($handle);
     
    	}
    Si joint un extrait du fichier
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    c'est un fichier qui sort d’où ?

  12. #12
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    D'une appli access.

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    la sortie n'est pas correct, les sauts de lignes doivent être encapsuler, t'as sans doute une option dans accès pour ca

  14. #14
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Ok je redemande une extraction du fichier.

    Merci

  15. #15
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Merci à tous,

    J'ai reçu un autre fichier qui n'était pas meilleur.

    J'ai donc compté le nombre de champs de chaque ligne. Une ligne normale devant en contenir 31.

    Si ce n'était pas le cas alors je cumul les champs jusqu'à ce que j'en ai 31.

    Et ensuite c'est bon.

    Un peu empirique, mais mon client n'était pas très volontaire pour faire mieux sur la livraison du fichier à traiter.

    Encore merci

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

Discussions similaires

  1. Lire une trame série contenant des sauts de lignes
    Par Jugulaire dans le forum Réseau
    Réponses: 4
    Dernier message: 03/04/2015, 08h33
  2. [AC-2010] Problème d'import fichier txt contenant des caractères spéciaux
    Par stsym dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/03/2014, 05h08
  3. Lire un fichier txt contenant une séquence nucléotidique
    Par schmurf dans le forum Bioinformatique
    Réponses: 14
    Dernier message: 06/02/2014, 23h31
  4. [AC-2003] FAQ Comment envoyer un mail (courriel) contenant des sauts de ligne ?
    Par Philobee dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/03/2012, 16h32
  5. Réponses: 3
    Dernier message: 11/06/2007, 11h20

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