Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2007, 17h02   #1
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
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 :
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...
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2007, 17h11   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h28   #3
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
snif
Toujours le même problème, va savoir d'où ça vient...
Voilà l'appel que je fais :
Code :
while (false!==($tabInfosContact=fgetcsv($pfic, 0, ";", '"'))){
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h32   #4
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Houla seulement pour faire la meme chose que

Code :
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
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h34   #5
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
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
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h46   #6
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Et à tout hasard si tu enlèves l'enclosure ( la précision des guillemets) ?
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h51   #7
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
J'ai essayé, ça ne change rien non plus; j'ai aussi essayé de virer le ";", mais là du coup plus rien ne passe ^^
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 14h54   #8
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Code :
1
2
 
while (false!==($tabInfosContact=fgetcsv(str_replace(";;", ";\"\";", $pfic), 0, ";", '"'))){
Hein c'est pas propre ?
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 15h02   #9
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
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 )!
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 15h46   #10
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
Problème réglé!
Fallais passer mon fichier TXT en ANSI et pas en UTF-8... elle est bien bonne, celle-là...
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 15h48   #11
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
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
__________________
Tout pas mieux que tout le monde : évitez les questions techniques en mp sinon à quoi bon poster sur un forum ?

Petite citation : "Le sage cherche la vérité, l'imbécile l'a déjà trouvée"
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h50.


 
 
 
 
Partenaires

Hébergement Web