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 :

Suppression de retour chariot dans un csv


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 29
    Points : 10
    Points
    10
    Par défaut Suppression de retour chariot dans un csv
    Bonjour,
    je suis en train de réaliser un parseur Php pour retirer les retours chariot présent dans un Csv.

    Comme dans tous Csv, chaque colonne est délimitée par des ; ou , ou autres...
    Et en fait j'ai un fichier source qui contient des retours chariots entre ses délimiteurs, et donc lors de l'import les lignes partent en vrille etc.

    Donc je cherche une solution via une Regex pour supprimer les retours chariot, si et seulement si, ils ne sont pas suivis immédiatement par un ;.

    Je suis un débutant en Regex, et je n'ai vraiment aucune idée comment faire.

    Merci de l'aide de chacun

    Un exemple rapide d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toto;tata;21/11/1958;something@somewhere.com;123345465;qsdqsd;retour
    a supprimer;une super info;

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 277
    Points : 11 733
    Points
    11 733
    Par défaut
    Par exemple, tu peux faire un preg_replace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $txt = "toto;tata;21/11/1958;something@somewhere.com;123345465;qsdqsd;retour
    a supprimer;une super info;" ;
    $txt2 = preg_replace('[\r\n]+([^;])', ' $1', $txt);
    Les retours chariots sont ambigus, sous Linux c'est \r, sous Windows il y a deux caractères, \r\n, du coup j'ai utilisé [\r\n]+ qui va reconnaître indifféremment les retours chariot Linux, les retours chariot Windows et les retours à la ligne.

    [^;] est n'importe quel caractère sauf un point-virgule. Je le mets entre parenthèses pour le récupérer ensuite, ça sera la référence $1. Au passage, note que ça veut dire que si ton texte se termine par un retour chariot, le retour chariot ne sera pas supprimé, puisqu'il n'est pas suivi par un caractère différent du point-virgule.

    Donc si on trouve un retour chariot (ou assimilé) suivi par un caractère différent du point-virgule, on remplace par un espace suivi du caractère en question :
    ' $1'.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

Discussions similaires

  1. [WD11] Suppression de retour chariot dans fichier texte
    Par shegu dans le forum WinDev
    Réponses: 3
    Dernier message: 19/11/2009, 14h57
  2. Supprimer retour chariot dans un fichier CSV
    Par smain_inf dans le forum VBScript
    Réponses: 2
    Dernier message: 20/08/2008, 10h56
  3. Suppression retours chariots dans PDF.
    Par Baban29 dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2008, 14h14
  4. [Débutant]Suppression retour chariot dans un fichier texte.
    Par Baban29 dans le forum Entrée/Sortie
    Réponses: 22
    Dernier message: 18/04/2008, 13h05
  5. Retour chariot dans un TMemo ?
    Par Vincent PETIT dans le forum C++Builder
    Réponses: 7
    Dernier message: 27/08/2002, 19h55

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