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 :

Remplacer seulements certains ";" dans une chaîne


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 55
    Points : 43
    Points
    43
    Par défaut Remplacer seulements certains ";" dans une chaîne
    Salut à tous,

    voilà mon problème :
    j'insère des données issues d'un fichier .csv
    tous les champs sont délimités par des ";"
    tout marche parfaitement sauf lorsque malheureusement dans le fichier d'origine certaines cellules contiennent des ";"
    J'ai tout de même remarqué que dans ce cas le champ est mis entre guillemets (" ")

    exemple de ligne correcte :
    blabla1 ; blabla2 ; blabla3 ; blabla4 ; blabla5 ; blabla6

    exemple de ligne non correcte :
    blabla1 ; "blabla2;suiteblabla2" ; blabla3 ; blabla4 ; blabla5 ; blabla6

    j'ai réussi à résoudre mon problème avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $pointVirguleASupprimer = "/(\".*;.*\")/";
    while(!feof($csv_ok)) // Tant qu'on est pas à la fin du fichier
    {
    	$ligne_en_cours = fgets($csv_ok); // On récupère la ligne en cours
    	echo "avant : " .$ligne_en_cours."<br/>";
    	if(preg_match_all($pointVirguleASupprimer, $ligne_en_cours, $pointVirgule))
    	{
    		$ligne = preg_split($pointVirguleASupprimer, $ligne_en_cours);
    		for($i=0 ; $i <= count($pointVirgule[0]) -1; $i++)
    		{
    			$ligne = preg_split($pointVirguleASupprimer, $ligne_en_cours);
    			$pointVirgule[0][$i] = str_replace(";", ",", $pointVirgule[0][$i]);
    			$ligne_en_cours = $ligne[0].$pointVirgule[0][$i].$ligne[1];
    		}
    		echo "apres : " .$ligne_en_cours."<br/>";
    	}
    }
    Cependant j'ai un problème si je rencontre plusieurs "mauvais" ";"
    comme dans cet exemple :
    blabla1 ; "blabla2;suiteblabla2" ; blabla3 ; "blabla4;suiteblabla4" ; blabla5 ; blabla6

    car avec le même code j'obtiens ceci :
    blabla1 ; "blabla2,suiteblabla2" , blabla3 , "blabla4,suiteblabla4" ; blabla5 ; blabla6

    tous les ";" compris entre les extrêmités des guillemets sont remplacés par ","


    Merci d'avance pour votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Regarde du côté de fgetcsv et fputcsv

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    55
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    merci de ta réponse rapide

    j'ai réussi à faire ce que je souhaitais grâce à la function fgetcsv

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ligne_en_cours = fgetcsv($csv_ok, 0, ";", "\"");

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

Discussions similaires

  1. [AC-2010] Remplacer caractères par d'autres dans une chaîne
    Par Invité dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/05/2011, 11h03
  2. Réponses: 2
    Dernier message: 12/04/2011, 14h37
  3. [BASH] Insertion de quotes dans une chaîne
    Par Alfred456654 dans le forum Linux
    Réponses: 7
    Dernier message: 21/07/2009, 13h55
  4. [MySQL] Remplacer dans une chaîne des motifs spéciaux : \' et \"
    Par BARBIER dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 25/11/2005, 17h39
  5. [String] Remplacement caractères dans une chaîne
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2004, 11h15

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