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] fonction fgetcsv : bug?!


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut [CSV] fonction fgetcsv : bug?!
    J'ai un petit soucis avec cette magnifique fonction... Je dis magnifique parce qu'avant je séparais mes valeurs csv à la main avec des explodes de partout
    Enfin bref...
    J'ai un fichier CSV qui a la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "xx.xx@xx.xx.xx";"fra";"dupond françois";"resp. achats";"nom commercial";"nom adv";"l'Oréal"
    "yy@yy.yy";;;;;;
    "yy_yy@yy.yy";;;;;;
    "yy@yy.com";;;;;;
    En sortie, je devrais obtenir toutes els valeurs contenues entre les '"'. Ca marche très bien MAIS (et oui, il y a un mais : fallait s'en douter) la 1ère valeur de la 1ère ligne conserve ses guillemets. Je veux dire que dans l'exemple ci dessus, je récupère "xx.xx@xx.xx.xx" au lieu de xx.xx@xx.xx.xx

    Je vous laisse imaginer la réponse de ma regexp qui vérifie la validité du mail après J'étais persuadé qu'elle refusait mon adresse a cause des points, mais non même pas c'est un tantinet plus grave.

    Enfin j'ai fait quelques tests, par exemple j'ai essayé d'insérer une ligne vide au début du fichier : là ça marche, mais du coup j'ai une erreur dans mon traitement ensuite (logique).
    Si ça peut être utile, sachez que le fichier a été écrit a la main sous notepad, encodé en utf8.
    Enfin si vous avez déjà eu ce genre de problème, ou que vous avez la moindre idée elle sera la bienvenue...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    J'avoue que je suis surpris j'ai déjà manipulé des imports de fichiers assez énormes (environ 30 000 lignes et une centaine de colonnes) et je n'ai jamais eu le moindre pépin avec cette petite fonction

  3. #3
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    snif
    Toujours le même problème, va savoir d'où ça vient...
    Voilà l'appel que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (false!==($tabInfosContact=fgetcsv($pfic, 0, ";", '"'))){

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Houla seulement pour faire la meme chose que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($tabInfosContact=fgetcsv($pfic, 0, ";", '"'))


    Petite précision quand je l'utilisais je ne précisais pas l'enclosure mais je ne vois pas comment ca viendrait de la

  5. #5
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    A priori, le false!== ne devrait aps changer grand chose... Il n'est là que pour éviter qu'on sorte de la boucle si la fonction sort une chaine vide ou un 0.

    edit : ça changer rien

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Et à tout hasard si tu enlèves l'enclosure ( la précision des guillemets) ?

  7. #7
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    J'ai essayé, ça ne change rien non plus; j'ai aussi essayé de virer le ";", mais là du coup plus rien ne passe ^^

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while (false!==($tabInfosContact=fgetcsv(str_replace(";;", ";\"\";", $pfic), 0, ";", '"'))){
    Hein c'est pas propre ?

  9. #9
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Oulà
    allez hop on va tenter

    edit :
    marche aps, logique : $pfic n'est pas une chaine mais un pointeur de fichier.

    Reedit : j'en ai ma claque de chercher là dessus, je vais virer les guillemets partout et alea jacta est

    rerereedit : j'allais oublier le plus important : MERCI (quand même )!

  10. #10
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Problème réglé!
    Fallais passer mon fichier TXT en ANSI et pas en UTF-8... elle est bien bonne, celle-là...

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Huhu comme on dit quand le sage montre la lune l'imbécile regarde le doigt ^^" ca nous apprendra.

    Désolé pour cette erreur grossière sur le str_replace

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/05/2008, 16h39
  2. Fonction fgetcsv() et explode()
    Par xianxian620 dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2008, 15h45
  3. [CSV] fonction fgetcsv, récupération des éléments
    Par mcdelay dans le forum Langage
    Réponses: 5
    Dernier message: 29/02/2008, 12h36
  4. [CSV] Fonction PHP pour SQL Server
    Par wolflinger dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 13h57
  5. [VB.NET]Fonction IsNumeric -bug- Windows Server 2003
    Par Seb.M dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/12/2004, 18h30

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