J'ai une ligne comme celle-ci dans mon CSV:
"Samsung U600 24"","10000003409","1","10000003427"
La citation à côté de 24
est utilisée pour exprimer les pouces, tandis que la citation juste à côté de cette citation ferme le champ. Je lis la ligne avec fgetcsv
mais l'analyseur fait une erreur et lit la valeur comme suit:
Samsung U600 24",10000003409"
J'ai essayé de mettre une barre oblique inverse avant la citation en pouces, mais j'obtiens juste une barre oblique inverse dans le nom:
Samsung U600 24\"
Existe-t-il un moyen d'échapper correctement à cela dans le CSV, de sorte que la valeur soit Samsung U600 24"
, ou dois-je l'exprimer dans le processeur?
Réponses:
Utilisez 2 guillemets:
la source
Non seulement les guillemets doubles, vous aurez besoin d'un guillemet simple (
'
), d'un guillemet double ("
), d'une barre oblique inverse (\
) et de NUL (l'octet NULL).Utilisez
fputcsv()
pour écrire etfgetcsv()
pour lire, qui s'occupera de tout.la source
fputcsv()
montre comment vous pouvez l'utiliserfputcsv()
lorsque vous souhaitez générer une sortie au format csv vers le navigateur au lieu d'un fichier réel.Je sais que c'est un ancien article, mais voici comment je l'ai résolu (avec la conversion de valeurs nulles en chaîne vide) en C # en utilisant une méthode d'extension.
Créez une classe statique avec quelque chose comme ce qui suit:
Ensuite, pour chaque chaîne que vous écrivez en CSV, au lieu de:
Vous faites juste:
la source
Si une valeur contient une virgule, un caractère de nouvelle ligne ou un guillemet double, la chaîne doit être placée entre guillemets. Par exemple: "Caractère de nouvelle ligne dans ce champ \ n".
Vous pouvez utiliser l'outil en ligne ci-dessous pour échapper aux opérateurs "" et,. https://www.freeformatter.com/csv-escape.html#ad-output
la source