Problème d'ajout de guillemets dans fichier csv avec la fonction fputcsv
TOULOUSELAUTREC69
Messages postés4Date d'inscriptionlundi 8 juin 2009StatutMembreDernière intervention11 juin 2009
-
8 juin 2009 à 16:54
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 2009
-
11 juin 2009 à 17:30
Bonjour,
Je génère un fichier csv sur mon site web qui contient la liste de mes clients du jour.
Ensuite j'importe ce fichier dans mon logiciel de facturation CIEL.
Globalement, tout se passe bien sauf que, quand je fais un fputcsv avec une donnée contenant un ou des espaces, la fonction entoure cette donnée avec des guillemets.
Résultat : quand j'importe dans CIEL, il faut que je repointe toutes mes fiches client afin d'enlever ces #@! de guillemet pirates !!!
Est-ce que quelqu'un a déjà eu ce souci ou pourrait me conseiller pour résoudre ce problème ?
Merci d'avance.
le quatrième paramètre permet de choisir le caractère de délimitation d echaînes, et apr défaut, c'ets le guilelmet double, puisqu'il est défini en tant qu'enclos de chaines de caractères dans la définition classique du CSV depuis plus de 2 décennies.
Tu peux lui déclarer de cette manière:
int fputcsv
( resource<tt class ="parameter">$handle</tt>
, array<tt class="parameter">$fields</tt> , string<tt class="parameter">$delimiter</tt> , '' )
pour avoir la chaine vide en tant que délimiteur.
Il faut savoir que Ciel a une vision assez space du CSV, puisqu'avec leur format si par malheur un libellé a une virgule, tout coince.
TOULOUSELAUTREC69
Messages postés4Date d'inscriptionlundi 8 juin 2009StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 14:15
Super !
Merci Nautilus.
Depuis 15 ans que je suis dans l'Informatique, il faudrait effectivement qu'un jour je me mette à lire les docs jusqu'au bout ;-)
TOULOUSELAUTREC69
Messages postés4Date d'inscriptionlundi 8 juin 2009StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 14:50
En fin de compte, ça ne marche pas avec ' ' : il faut que le champ enclosure contiennent au moins un caractère.
sinon message "php warning" et pas de fichier csv généré au bout du fil.
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 11 juin 2009 à 15:23
Etrange, tu es sous quelle version de PHP. Chez moi la chaine vide fonctionne.
Mais en cas de vrai problème avec ça, tu mets espace comme séparateur et tu fais ensuite un trim de la chaine...
Vous n’avez pas trouvé la réponse que vous recherchez ?
TOULOUSELAUTREC69
Messages postés4Date d'inscriptionlundi 8 juin 2009StatutMembreDernière intervention11 juin 2009 11 juin 2009 à 15:31
Pour la version PHP :
PHP Version 5.2.3-1ubuntu6.4
J'avais pensé aussi à l'espace avec un chr(20) comme enclose mis pour le trim : tu le fais à quel moment ?
Concrètement, je mets mes données dans un array ; après, je fais le fputcsv avec le array en argument.
Je ne vois pas comment faire le trim sinon en rouvrant le fichier et en traitant ligne après ligne ?