IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Reformater un fichier CSV à partir d'un fichier CSV source


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Points : 52
    Points
    52
    Par défaut Reformater un fichier CSV à partir d'un fichier CSV source
    Bonjour

    Je cherche a reformater un fichier CSV a partir d'un fichier source dont le contenu s'apparente à ceci :

    [["name","Nom","Dupont"],["email","E-mail","juliendupont@internet.fr"],["text_field","Num Tel","0600010001"],["text_field","Valeur","120"],
    ["text_field","Année","1979"],["text_field","Adresse","35 Rue du Paradis"],["text_field","Adresse ( suite )",""],["text_field","Code Postal","75001"],
    ["text_field","Ville","maville"]]
    Je voudrai créer un nouveau fichier CSV épuré à partir des données sources tout en reformatant le contenu des champs et en supprimant les champs non utiles :

    [["nom","Dupont"],["ville","maville"]]
    Le soucis que je rencontre est que pour chaque champ du fichier source il y a 3 données, par exemple pour le Nom on a "name" puis "Nom" et enfin la donnée du champ associée : "Dupont"

    Pourriez vous me montrer comment procéder avec fgetcsv pour obtenir ce nouveau fichier je ne vois pas comment récuperer la 3eme partie d'un champ à partir du nom de sa 1ere partie,
    c'est à dire, lire le champ "name" dans le CSV et obtenir "Dupont" pour créer un nouveau fichier CSV.

    Merci à vous,

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 452
    Points : 43 103
    Points
    43 103
    Par défaut
    C'est pas du CSV ton doc.

    Voici ce que tu peux faire :

    Tu lit chaque ligne avec par exemple fgets.

    Ensuite sur chaque ligne lue, tu applique explode avec en délimiteur ],[

    Tu obtiendra un tableau x de chaine contenant pour la première entrée : [["name","Nom","Dupont"
    sur chaque chaine de ce tableau x , tu filtres les caractères indésirables ([]") (avec str_replace par exemple)
    Tu refais ensuite un explode sur ces sous-chaines avec séparateur ,
    Tu n'as plus qu'à prendre la dernière entrée de ce nouveau tableau y
    tu copie ensuite cette entrée en fin de chaine de destination, tu y ajoutes le séparateur voulu pour ton fichier csv.
    En fin de traitement de la ligne, tu remplaces le dernier caractère de la chaine (séparateur csv) par un retour chariot, puis tu écris la ligne dans le fichier de destination.
    tu recommernces ensuite sur la ligne suivante du fichier source.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/07/2014, 15h44
  2. reformater un fichier csv
    Par jobar38 dans le forum Excel
    Réponses: 7
    Dernier message: 15/04/2010, 14h25
  3. Besoin d'un fichier code source
    Par karimm dans le forum MATLAB
    Réponses: 1
    Dernier message: 10/11/2006, 12h50
  4. Création de nouveau fichiers entete/source
    Par valerossi46 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/08/2006, 10h12
  5. reformater un fichier txt en html
    Par Thordax dans le forum C++
    Réponses: 8
    Dernier message: 22/06/2006, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo