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 :

[CSV] Duplication de ligne anormale avc fgets


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut [CSV] Duplication de ligne anormale avc fgets
    Bonjour,

    Voila sur mon serveur Linux, j'ai un fichier avec une extention csv (file.csv).
    ce fichier est generer par un script, une fois generer j'execute un script PHP qui le le fichier et le parse pour pouvoir entrer des information dans une base de donnee.

    mon souci est le suivant. prenons un exemple du fichier :

    Ligne 45
    Ligne 46
    Ligne 47
    Ligne 48
    lorsque je le lis avec mon script PHP je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $file = '/home/file.csv';
    $handle = fopen($file, "r");
    while (($data = fgets($handle, 1000)) !== FALSE) 
    	{
    	echo $data.'<br>';
            }
    seulement a un endroit du fichier et seulement un seul, il me duplique la ligne et je ne sais pas pourquoi. voila ce que j'obtiens :

    [...]
    --------------------------
    Ligne 45
    --------------------------
    Ligne 46
    --------------------------
    Ligne 46
    Ligne 47
    --------------------------
    Ligne 48
    --------------------------
    [...]
    j'ai verifier avec un editeur hexadecimal, et j'ai bien un caractere de nouvelle ligne (code hexa : 0A)

    je ne sais pas du tout quoi faire ...
    pour info ma version de PHP est la suivante : PHP Version 4.3.9

    Voila .. merci d'eclairer ma lanterne

    EDIT apres de nouveaux TEST, j'ai utilisé fgetc comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while (($data = fgetc($handle)) !== FALSE)
    	{
    	if (strtoupper(bin2hex($data)) == '0A')
    		echo $data.'<hr>';
    	else
    		echo $data;
             }
    et je n'ai plus ma ligne en double. il y a donc bien un caractere de nouvelle ligne. Alors pourquoi fgets ne le detecte pas ??

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Essaie de ne spécifier aucune taille de buffer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (($data = fgets($handle)) !== FALSE)
    [edit]je n'ai pas eu le temps de voir ton edit :o)
    PS : si tu as un gros fichier à parser, tu ferais d'utiliser fscanf qui est plus rapide.[/edit]

Discussions similaires

  1. [CSV] Compter les lignes d’un fichier csv
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 11h16
  2. duplication de lignes
    Par tomh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2006, 17h54
  3. Récupérer une ligne aléatoire avec fgets
    Par Alexbad dans le forum C
    Réponses: 20
    Dernier message: 30/07/2006, 23h53
  4. [CSV] retour à la ligne?
    Par wolflinger dans le forum Langage
    Réponses: 6
    Dernier message: 02/06/2006, 09h16
  5. Probleme etat (duplication des pages anormales)
    Par dynexd dans le forum Access
    Réponses: 1
    Dernier message: 09/04/2006, 18h03

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