Page 1 sur 1

description fichier csv

Posté : 20 mars 2007, 15:14
par Invité
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.

Posté : 20 mars 2007, 16:30
par Ryle
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 :)

Posté : 20 mars 2007, 17:34
par Invité
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?

Posté : 20 mars 2007, 17:55
par Invité
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?

Posté : 20 mars 2007, 17:58
par VaN
ç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();

Posté : 20 mars 2007, 17:59
par Invité
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?

Posté : 20 mars 2007, 18:01
par Invité
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?

Posté : 20 mars 2007, 18:01
par VaN
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.

Posté : 20 mars 2007, 18:32
par Invité
comment choisir entre \n et chr(10) ?

Posté : 20 mars 2007, 19:14
par Invité
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?

Posté : 21 mars 2007, 14:56
par Invité
fgetcsv peut-il faire la distinction entre un \n au milieu d'un champ et un \n en fin ligne?

Posté : 21 mars 2007, 22:48
par ghalaad
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" ;)

Posté : 22 mars 2007, 10:05
par Invité
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?

Posté : 22 mars 2007, 10:07
par Invité
je veux dire: un fichier csv contenant des retours à la ligne dans les champs est -il définitivement inexploitable?