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 :

str_replace ne trouve pas la chaîne """"


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut str_replace ne trouve pas la chaîne """"
    Bonjour,

    J'ai une longue chaîne de caractères dans laquelle est contenu 4 doubles quottes côte à côte:

    ""devis pour evolution ""calcul de distance à vol d'oiseau"""" "Etat

    J'essaye de la remplacer par une simple quotte avec la fonction str_replace mais cela ne fonctionne pas. Voici ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content = str_replace('""""', '\"', $content);
    Auriez-vous une idée d'où cela vient ?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et pourant ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $content = '""devis pour evolution ""calcul de distance à vol d\'oiseau"""" "Etat';
    echo str_replace('""""', '"', $content);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de Mitaka
    Profil pro
    formaTRICE en informatique
    Inscrit en
    Avril 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : formaTRICE en informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 192
    Par défaut
    salut,
    pourrais-tu nous montrer comment tu reçois ta chaîne ? entre quote ? entre guillemets ?
    normalement tu devrai avoir une erreur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut
    En faite, c'est un csv de cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Application [Transverse]"	"Version prevue [Transverse]"	"Type"	"ID"	"Récapitulatif"	"Statut"	"Charge 1 [Transverse]"	"Createur Demande [Transverse]"	"Libelle Galilei 1 [Transverse]"	"Date reelle validation devis [Transverse]"	"Date reelle go realisation [Transverse]"	"Date previsionnelle livraison recette [Transverse]"	"Date reelle livraison recette [Transverse]"	"Date previsionnelle livraison production [Transverse]"	"Date reelle livraison production [Transverse]"
    "SIBTGV"	""	"Demande Devis"	"410"	""devis pour evolution ""calcul de distance à vol d'oiseau""""	"Etat : Abandonnée"	""	"Didier CAROTENUTO"	""	""	""	""	""	""	""
    Certains champs contiennent une double quottes(") comme par exemple:
    • devis pour evolution "calcul de distance à vol d'oiseau"


    Ce champs s'affiche bien avec une double quotte dans excel mais lorsque je l'ouvre avec Notepadd++ la double quottes et remplacée par 2 doubles quottes:

    • devis pour evolution ""calcul de distance à vol d'oiseau""


    Et cela me pose un problème lorsque je parcours mon csv avec fgetcsv, cela coupe ma chaîne et me décale tout:



    J'aurais aimé savoir comment supprimer c'est 2 doubles quotes pour éviter de découper ma chaîne et le décalage.

    Merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    lorsque je l'ouvre avec Notepadd++ la double quottes et remplacée par 2 doubles quottes
    Notepad++ t'affiche ce que contient réellement le fichier
    ""devis pour evolution ""calcul de distance à vol d'oiseau""""
    est la chaine
    "devis pour evolution "calcul de distance à vol d'oiseau""
    encadrée par des ".

    Ton séparateur c'est une tabulation, pas "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fgetcsv($handle,2000,"\t", '"')
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Par défaut [Résolu]
    Merci, problème résolu

  7. #7
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ben oui, c'est normal, c'est comme ça que ça fonctionne : CSV a un séparateur (en général une virgule ou un point-virgule) et un caractère d'encadrement (en général une double quote ou une simple quote).
    Wikipédia : CSV
    A vue de nez, je dirais que ton séparateur est une tabulation et ton encadreur une double-quote. Or, tu as utilisé la double-quote à la fois comme séparateur et comme encadreur dans ton appel à fgetscsv.

    Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (($data = fgetcsv($handle,2000,chr(9), '"')) !== FALSE ) {
    A noter : PHP n'aime pas trop les csv avec des tabulations. Donc, si tu as le choix, utilise plutôt des virgules ou des point-virgules.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. je ne trouve pas la bonne syntaxe
    Par poelvo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2003, 01h30
  2. [TP]trouve pas le graph.tpu
    Par kaygee dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 13/06/2003, 12h49
  3. [Kylix] [cgi] ne trouve pas libsqlmy.so.1 !
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 04/07/2002, 15h15

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