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 :

Ignorer virgule entre double quote [RegEx]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Ignorer virgule entre double quote
    Bonjour a tous, je suis actuellement en stage et mon travail consiste a intégrer des commandes dans une BDD (Amazon par exemple) a l'aide d'un fichier CSV.
    Chaque éléments d'une ligne du fichier CSV étant séparé par des virgules j'utilise preg_split('/[,]/', $maChaine) pour en extraire les informations. Sauf que une commande vient de tomber et l'adresse de livraison contient une virgule. Forcément tout se décale.
    Exemple : Michel,michel@gmail.com,0601020304,"12 Rue du chêne,",98000,MONACO
    Je cherche donc soit un moyen d'ignorer les virgules contenues dans des doubles quotes lors du split soit de les supprimer (ou un tout autre moyen me permettant de passer outre ce problème).

    J'ai trouvé un problème similaire sur le forum mais je n'arrive pas a en tirer quelque chose https://www.developpez.net/forums/d1...-double-quote/

    Je vous remercie d'avance pour toute aide ou suggestion.

  2. #2
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Bonjour antoinej21,

    Je pense que le moyen le plus sûr de gérer ce genre de problème est d'encoder les données contenues entre les séparateurs durant la génération du CSV.
    En encodant constamment les données tu réduis grandement les risques d'injection et ton code sera plus stable en cas de changement de séparateur ou de format de données.
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse. Le problème c'est que le CSV est directement généré par Amazon. Il peut y avoir plusieurs fichiers et ils sont donc importés en masse par mon application. Ce n'est donc pas moi qui le génère.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    inutile de réinventer la roue à couper le beurre tiède.

    • utilise plutôt : fgetcsv() (voir les exemples)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Et ben merci beaucoup ca fait tout a fait le travail.
    D'après la doc j'ai fait ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(($orderList = fgetcsv($orderListFile, 1000, ",")) !== false) //Pour chaque ligne du fichier
    {
     
          $orderList; //Contient le tableau avec les éléments de la ligne
     
     }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer du texte entre double quotes
    Par brandtance dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 18/02/2017, 03h42
  2. regex remplacer toutes les virgules entre double quote
    Par GregHory dans le forum Langage
    Réponses: 13
    Dernier message: 04/09/2015, 16h19
  3. awk ou sed : Supprimer argument entre doubles quotes sur une ligne de fichier
    Par SuperJoker dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 18/05/2014, 21h08
  4. [RegEx] Regex avec virgule dans double quotes
    Par LeHibou2 dans le forum Langage
    Réponses: 2
    Dernier message: 16/12/2012, 20h16
  5. Chaînes entre double quotes
    Par ybruant dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2008, 14h46

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