Aller au contenu

Fichier texte : récupérer un élément de la ligne


loulou

Sujets conseillés

Bonjour,

J'ai un problème avec un fichier texte.

Je récupère des lignes qui sont constituées de champs séparés par des tabulations.

Pour récupérer ces champs je fais :

while ($data = fgetcsv ($fp, 4096, "\t","\r\n"))

{

$champs0=$data[0];

........

}

Cela marche très bien, sauf pour certains champs qui correspondent à des prix et qui ont la forme : 193,78 par exemple.

Pour ce type de champs, avec mon code actuel, je récupère 193,7.

J'ai essayé de faire ($data[x]*100), mais cela me donne : 19300.

Là encore la décimale n'est pas prise en compte.

J'ai essayé de faire

$dta=(ereg_replace(",", "", $data[x]));

(suppression de la virgule dans la chaine, mais là encore, j'obtiens 1937. (il manque le 8 à la fin de ma chaine).

Avez-vous une idée de la procédure à suivre ?

Merci

----------

edit modérateur: modifié la faute dans le titre ;-)

Modifié par Dudu
Lien vers le commentaire
Partager sur d’autres sites

while ($data = fgetcsv ($fp, 4096, "\t","\r\n"))
{
list ($champ1, $champ2, ..., $champn) = $data;
}

ou bien

while (list($champ1, $champ2, ..., $champn) = fgetcsv ($fp, 4096, "\t","\r\n")) {

// Ton traitement
}

Lien vers le commentaire
Partager sur d’autres sites

Merci NorSeb. J'ai appliqué la première méthode que tu m'as donné, et cela a fonctionné. Mais pour ne ne sais quelle raison, je n'ai toujours pas le 2nd chiffre après la virgule.

Je ne vois vraiment plus comment faire. Si quelqu'un a une idée ?

Lien vers le commentaire
Partager sur d’autres sites

J'ai lu que la fonction fgetcsv utiliserait les spécifications de Excel... Je ne sais quoi en penser. Toujours est-il que tu ne risque rien à tenter une autre solution, du genre :

while (!feof($fp)) {

$ligne = fgets($fp);

list($champ1, $champ2, ...) = explode("\t", $ligne);

// Ton traitement


}

Lien vers le commentaire
Partager sur d’autres sites

Et bien je n'y comprends plus rien.

Après avoir essayé la fonction "list", j'ai rééssayé mon code du début : et là miracle ça marche !

Je ne sais pas si c'est moi qui ne voyais rien ou si j'ai modifié quelque chose dasn mon code en faisant les divers tests que tu m'as conseillés.

Je pense que c'est la première solution la bonne... :blush:

En tout cas merci pour ton aide !

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...