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

PHP & Base de données Discussion :

PHP, importer un csv :supprimer le retour charriot [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 9
    Points
    9
    Par défaut PHP, importer un csv :supprimer le retour charriot
    Bonjour à tous,
    Un peu d'aide serait la bienvenue..

    Après des heures de recherches, je vous expose mon problème :

    J'ai un fichier .csv, généré via Excel.
    Celui ci contient une seule colonne et plusieurs lignes.
    J'importe ce fichier via PHP.

    L'import se passe sans souci.
    Cependant, si j'ai des retours charriots et autres sauts de ligne dans ma cellule excel, ceci est retranscris dans ma base de donnée.

    Je souhaiterai supprimer ces retours charriot et retour à la ligne, pour que le texte de chaque cellule à importer soit sur "une ligne".
    J'ai utiliser str_replace :
    $texteok = str_replace("\n"," ",$texte_avec_retour);
    $texteok = str_replace("\r"," ",$texte_avec_retour);
    $texteok = str_replace("\t"," ",$texte_avec_retour);

    Ce code là fonctionne dans le sens où si je fais un $texteok = str_replace("a","b",$texte_avec_retour); les lettres A sont correctement remplacé par les lettres B puis importées dans la DB.

    J'en déduis donc que \n \r \t ne sont pas les bons "codes" pour les retours charriots du csv...

    Est ce que quelqu'un pourrait m'aider ?
    Merci d'avance !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $texteok  = preg_replace('/[\n,\r]+/', ' ', $texte_avec_retour);
    A+.

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Au choix:
    • Pour remplacer n'importe quelle série d'espaces verticales par une espace simple unique:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $str = preg_replace('~\v+~u', ' ', $str);
      Il y a des espaces verticales qui ne sont pas à proprement parler une séquence de nouvelle ligne classique comme par exemple la tabulation verticale.
    • Pour remplacer n'importe quelle série d'espaces horizontales ou verticales par une espace simple unique:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $str = preg_replace('~\s+~u', ' ', $str);
      Celà évite les espaces consécutifs si par exemple une espace verticale est précédée ou suivie d'une espace horizontale. Par contre tous les espaces horizontales comme par exemple la tabulation ou l'espace insécable seront remplacer par des espaces simples.
    • Il y a aussi \R qui est un alias pour désigner uniquement une séquence de nouvelle ligne quelle qu'elle soit:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $str = preg_replace('~\R~u', ' ', $str);
      c'est un alias de (?>\r\n|\x0b|\f|\r|\n|\x85) auquel on ajoute les caractères U+2028 (Line separator) et U+2029 (Paragraph separator) en mode multibytes avec le modificateur u.
      À noter qu'il est possible de réduire \R à (?>\r\n|\r|\n) en commençant la pattern par (*BSR_ANYCRLF).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Merci
    Bonjour

    Merci pour vos réponses.
    J'ai testé vos codes à tous les deux : ils fonctionne
    Merci beaucoup

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/05/2016, 11h27
  2. [SQLITE] Commande pour importer un csv dans une db sqlite à partir de PHP
    Par kaboume dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/09/2008, 15h15
  3. [PHP-JS] Supprimer les retours à la ligne
    Par defacta dans le forum Langage
    Réponses: 3
    Dernier message: 08/10/2007, 13h23
  4. [PHP,MYSQL et CSV]Importation avec nombres décimaux
    Par m3n2o dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 20/06/2006, 11h47
  5. [CSV] supprimer les retours à la ligne
    Par illegalsene dans le forum Langage
    Réponses: 3
    Dernier message: 09/01/2006, 16h14

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