Aller au contenu

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


Sujets conseillés

Posté (modifié)

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
Posté

Non ils y en a 2 qui se suivent et ils sont en position 3 et 4 sur 7, en partant de 0.

C'est donc $data [3] et $data [4] dasn ma boucle.

Posté

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
}

Posté

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 ?

Posté

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


}

Posté

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 !

Veuillez vous connecter pour commenter

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



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