description fichier csv

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 15:14

Bonjour à tous,
Dans un fichier csv, les chams sont séparés par des ;
Quel caractère est sensé permettre de spécifier les retours à la ligne, c'est à dire la fin d'un enregistrement/début d'un autre enregistrement?

Merci pour vos réponses.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 mars 2007, 16:30

Le retour à la ligne est symbolisé par "\n"

Attention toutefois, certains champs d'un fichier csv peuvent contenir des retours à la ligne sans pour autant que la ligne soit terminée. Ces champs sont spécifiés entre guillemets :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 17:34

certains post sur internet parlent de chr(10) pour spécifier les retours à la ligne. devrais-je préférer \n ou chr(10)? pourquoi?

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 17:55

et j'en rajoute une petite troisième: est-ce que lorsque je crée mon fichier csv, je peux me permettre de ne pas préciser de retour à la ligne.
ça voudrait dire que mes champs seront séparés par des ;
Php peut il reconnaitre chaque enregistrement dans ce cas?

VaN
Mammouth du PHP | 1107 Messages

20 mars 2007, 17:58

ça voudrait dire que mes champs seront séparés par des ;
Php peut il reconnaitre chaque enregistrement dans ce cas?
Oui, PHP peut découper une chaîne selon un caractère spécifique : explode();

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 17:59

Attention toutefois, certains champs d'un fichier csv peuvent contenir des retours à la ligne sans pour autant que la ligne soit terminée. Ces champs sont spécifiés entre guillemets
Dans mon fichier, certains champs contiennent effectivement retours à la ligne. Mais ils sont spécifiés par des \n.
Les fins d'enregistrement sont aussi des \n.
Dans ce cas, comment je fais pourque php distingue les 2?

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 18:01

Oui, PHP peut découper une chaîne selon un caractère spécifique : explode();
S'il n'y a aucun retour à la ligne spécifié, comment php fait pour identifier une fin d'enregistrement?

VaN
Mammouth du PHP | 1107 Messages

20 mars 2007, 18:01

Dans mon fichier, certains champs contiennent effectivement retours à la ligne. Mais ils sont spécifiés par des \n.
Les fins d'enregistrement sont aussi des \n.
Dans ce cas, comment je fais pourque php distingue les 2?
Peut etre en verifiant qu'il n'y a plus rien derriere tel \n. Si il n'y a plus rien, c'est qu'il s'agit de la fin d'enregistrement.

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 18:32

comment choisir entre \n et chr(10) ?

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2007, 19:14

Je crois qu'on peut oublier la questions précédente, j'y ai apporté une réponse.
Peut etre en verifiant qu'il n'y a plus rien derriere tel \n. Si il n'y a plus rien, c'est qu'il s'agit de la fin d'enregistrement.
Comment faire cette opération avec php? Y a t il une fonction dédiée?

Invité
Invité n'ayant pas de compte PHPfrance

21 mars 2007, 14:56

fgetcsv peut-il faire la distinction entre un \n au milieu d'un champ et un \n en fin ligne?

Eléphanteau du PHP | 49 Messages

21 mars 2007, 22:48

Non.
Imagine que tu poses la question:
"Lequel veux tu prendre ? Le ballon vert ou le ballon vert ?"
Tu prends celui que tu préfères, mais un ordinateur n'a pas de "préférence" ;)

Invité
Invité n'ayant pas de compte PHPfrance

22 mars 2007, 10:05

Je vourais juste savoir comment faire quand on a des \n en milieu de champ et en fin d'enregistrement. ça arrive effectivement souvent si on appuie sur enter dans une cellule en cours de saisie.
Je suis sensé abandonner?

Invité
Invité n'ayant pas de compte PHPfrance

22 mars 2007, 10:07

je veux dire: un fichier csv contenant des retours à la ligne dans les champs est -il définitivement inexploitable?