Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1610 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  fichier texte ouvert avec fgetcsv() en php (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fichier texte ouvert avec fgetcsv() en php (résolu)

n°1835899
rouanelion
Posté le 09-01-2009 à 11:50:50  profilanswer
 

Bonjour à tous,
 
Voilà j'ai un fichier texte avec pas mal de ligne de ce type là:
"le test est là" "parti pour réussir" "fiofififi" 07/01/2009 "12,00" "/20" 2008 "FEGS"
comme on peut le voir les chaines de caractères sont entre "" alors que date et entier non. Les espaces sont pas les mêmes donc dur de trouver un moyen de traiter correctement le fichier...
j'aimerai faire en sorte que chaque bout aille dans une variable mais j'avoue que je galère un peu donc si quelqu'un sait comment trier cette ligne ça m'aiderai. Je vais continuer mes tests et si je trouve avant une réponse je mettrai en ligne car je dois pas être le seul au vue de ce que j'ai pu lire sur le net qui recherche un truc dans le style.
 
Merci d'avance en tout cas.


Message édité par rouanelion le 13-01-2009 à 08:43:28
mood
Publicité
Posté le 09-01-2009 à 11:50:50  profilanswer
 

n°1835903
FlorentG
Unité de Masse
Posté le 09-01-2009 à 11:54:15  profilanswer
 

Même si le format de ligne est bizarre, si toutes les lignes sont comme ça, ça ne pose pas trop de problèmes. Est-ce qu'elles sont toutes indentiques ?

n°1835905
Mara's dad
Yes I can !
Posté le 09-01-2009 à 11:56:00  profilanswer
 

La structure est-elle toujours la même ?
 [:grilled]


Message édité par Mara's dad le 09-01-2009 à 11:56:18

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1835907
rouanelion
Posté le 09-01-2009 à 11:59:23  profilanswer
 

Merci de vos réponses aussi rapide je m'y attendais pas.
J'ai parcouru pas mal de lignes et oui la structure est la même j'ai des champs vident "" mais je pense pas que ça posera un problème. Et vous?

n°1835910
Mara's dad
Yes I can !
Posté le 09-01-2009 à 12:01:42  profilanswer
 

Non, pas de pb pour une expression régulière.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1835924
omega2
Posté le 09-01-2009 à 12:41:48  profilanswer
 

Ca m'a tout l'air d'être un texte dans un format CSV avec séparateur espace (ou tabulation, à vérifier)
=> fgetcsv

n°1835947
Mara's dad
Yes I can !
Posté le 09-01-2009 à 13:41:54  profilanswer
 

Pas mal le coup de fgetcsv, je connaissais pas !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1835952
rouanelion
Posté le 09-01-2009 à 13:45:54  profilanswer
 

je vais regarder ça de plus pret merci en tout cas

n°1835979
rouanelion
Posté le 09-01-2009 à 14:25:21  profilanswer
 

Merci voilà ce que j'ai fait et repris sur le net grâce a ta fonction et ça sert dans mon cas. J'ai déjà isolé toutes les parties dans chaque ligne du fichier j'ai plus que me faire la suite.
Si ça peut servir, j'ai mis des commentaires vite fait

Code :
  1. $row = 1; //je mets la variable définissant le nombre d'enregistrement à 1
  2. $handle = fopen("nomfichier.extension", "r" ); //ouverture du fichier en lecture attribué a variable $handle
  3. while (($data = fgetcsv($handle, 1000, "\t" )) !== FALSE) // Boucle tant que j'ai pas parcouru tout mon fichier avec comme délimiteur tabulation avec \t
  4. {
  5.       $num = count($data); //compte nombre de parti dans la phrase
  6.      echo "<p> $num champs à la ligne $row: <br /></p>\n"; //affiche nombre de parti dans la phrase
  7. $row++; //incrémentation de l'enregistrement de la phrase
  8.     for ($c=0; $c < $num; $c++) //tant qu'on a pas afficher toutes les parties
  9. {
  10.         echo $data[$c] . " <br />\n"; // affichage des différentes parties composants une ligne $rows
  11.     }
  12. }
  13. fclose($handle); // on ferme le fichier

n°1835997
omega2
Posté le 09-01-2009 à 15:01:20  profilanswer
 

Je sais que tu débutes, mais là t'es entrain de noyer ton code dans trop de commentaire. Trop de commentaires rend l'ensemble plus difficile à relire par ce qu'on est obligé de réfléchir un peu plus pour ne pas être perturbé par le texte.
 
par exemple :
"//je mets la variable définissant le nombre d'enregistrement à 1 "
Le = du code se suffit à lui même pour savoir quelle valeur tu mets dans la variable. Un simple "//compteur de numéro de ligne" suffit pour savoir à quoi sert la variable tout en étant d'ailleurs plus clair sur l'utilité de cette variable.
 
En passant. Si tu veux simplifier légèrement ton code, en php il y a une fonction magique pour parcourir un tableau en entier : foreach Comme son nom l'indique c'est une boucle qui fait une itération (une exécution du code contenu entre {} ) pour chaque élément du tableau. Cependant c'est un raccourcis du langage (la plupart des autres langages n'ont pas d'équivalent) et c'est très bien que t'ai d'abord appris à te servir de la boucle "for".
 
Attention avec foreach, c'est une instruction plus lente que le for normal par ce qu'elle fournis par défaut une copie des éléments du tableau et pas directement les éléments du tableau. Du coup même si on modifie les éléments fournis par foreach, le contenu du tableau reste intact. On peut évidement lui dire de fournir les éléments du tableau lui même pour modifier le contenu du tableau mais ça n'est pas la peine de t'embrouiller avec ça pour le moment. ;)

mood
Publicité
Posté le 09-01-2009 à 15:01:20  profilanswer
 

n°1836001
rouanelion
Posté le 09-01-2009 à 15:08:52  profilanswer
 

Ok merci de l'information, je vais nettoyer tout ça et j'espère que ça marchera ^_^ car chaque champs de données que je récupère je veux le mettre dans une table sql donc j'ai encore de quoi m'amuser un peu.

n°1836984
rouanelion
Posté le 12-01-2009 à 17:02:44  profilanswer
 

rebonjour,
J'ai encore des problèmes avec mes fichiers txt...
 
fgetcsv() fonctionne mais pas sur tous les fichiers...
Après analyse du problème, il s'avère que certains ont besoin lorsque je les ouvre dans excel que je mette comme délimiteur de texte " en plus de la tabulation et je n'arrive pas à le gérer dans fgetcsv(), pourtant y a bien un 4eme argument dans cette fonction qui est "enclosure" mais le " me plante mon code si quelqu'un voit comment je peux faire...
Merci d'avance

n°1836987
omega2
Posté le 12-01-2009 à 17:07:52  profilanswer
 

Exemple de code qui plante?

n°1837181
rouanelion
Posté le 13-01-2009 à 08:42:02  profilanswer
 

Merci Omega2 ça y est j'ai compris ce qui clochait, j'avais les lignes de mon fichier texte qui était légèrement supérieur au deuxième paramètre de la fonction... une journée a nettoyer le fichier avec des fonctions php pour comprendre cela... y a des jours faut pas se lever :-)
Merci encore je vous embêterai plus avec ça.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  fichier texte ouvert avec fgetcsv() en php (résolu)

 

Sujets relatifs
[RESOLU] Probleme synchro thread[Résolu][C] probleme avec une macro
Problème à centrer une image [RESOLU][résolu] Pb d'url avec des caractères spéciaux
lecture de contenu de plusieurs fichiers [résolu][C] Parcourir un fichier
[Résolu]Milieu entre 2 dateEcriture dans un fichier
[Résolu] [JSF] Managed Bean contenant d'autres pojos[Résolu] pure virtual method called
Plus de sujets relatifs à : fichier texte ouvert avec fgetcsv() en php (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR