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 :

preg_replace remplacer des guillemets


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut preg_replace remplacer des guillemets
    Bonjour j'ai du mal avec preg_replace.
    Je souhaites remplacer d''une par d'une mais je n'y parviens pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace("#[a-zA-Z]''#", "$0\'", $a);
    Dernière modification par stealth35 ; 07/09/2011 à 14h22.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    un str_replace suffit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str_replace("''", "'", $text);

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui, mais le problème, c'est qu'il y a des valeurs comme 3.5'' qui ne doivent pas être modifiées

  4. #4
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour,

    Juste comme ça on par d'un double ' (touche 4 clavier standard FR) ou d'un simple " (touche 3 clavier standard FR)

    Car c'est juste pas du tout la même chose dans ton preg_replace ensuite

    Cordialement,

  5. #5
    Invité
    Invité(e)
    Par défaut
    Il s'agit de de deux guillemets simple

  6. #6
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Ok c'était pour être sur car j'ai souvent vue des confusion entre quotes (') et guillemets (")

    Pour ton soucis tu peux nous donner un exemple de retour que tu as après ta fonction preg_replace ?

    Cordialement,

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Inazo Voir le message
    Ok c'était pour être sur car j'ai souvent vue des confusion entre quotes (') et guillemets (")

    Pour ton soucis tu peux nous donner un exemple de retour que tu as après ta fonction preg_replace ?

    Cordialement,
    le str_replace suffit, pas besoin de continuer vers le preg_replace

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui mais j'ai par exemple
    d''une -> d'une
    3.5'' ne doit pas être modifier
    Donc str_replace ne peut pas marché car il va tous remplacer.

  9. #9
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Oui dans un cas classique pas besoin d'aller plus loin mais il ne veut pas que la modification soit faite pour les chaine de type 3.5'' d'ou dans son preg_replace la volonté de ne faire le remplacement que pour une lettre suivie de ''.

    Cordialement,

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est ca

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Oui mais j'ai par exemple
    d''une -> d'une
    3.5'' ne doit pas être modifier
    Donc str_replace ne peut pas marché car il va tous remplacer.
    c'est 3.5" pas 3.5'' (double vs simple)

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ce sont des guillemets simples (touche 4)

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Ce sont des guillemets simples (touche 4)
    pour les pouces en ASCII le caractère correct est le 3

    sinon fait juste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('/\'+(?=\w)/', '\'', $text);

  14. #14
    Membre à l'essai
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 11
    Points : 14
    Points
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = '/(\w+)["]{1}(\w+)/';
    $replacement = "$1'$2";
    echo preg_replace($pattern, $replacement, $string);

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci, mais cela ne correspond pas tout a fait avec ce que je cherche.

    Begany, peut m'expliquer le rôle de ton pattern, car je suis un peu perdu.

    J'ai des mal avec les expressions. Peut-on trouver une liste des arguments possible dans le pattern, car le documentation de PHP reste assez mince pour cela.

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as essayé le mien ?

  17. #17
    Invité
    Invité(e)
    Par défaut
    J'ai essayer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pattern = "/[a-zA-Z]['']{2}/";
    $replacement = "$0\"";
    $a = preg_replace($pattern, $replacement, $a);
    Mais j'ai le résultat suivant:
    d''une -> d''"une (2 apostrophes simple dans le premier cas et 2 apostrophes simple + 1 double dans le second)

  18. #18
    Invité
    Invité(e)
    Par défaut
    Oui stealth35 j'ai essayé le tiens, mais sans succès. Merci quand même.

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Oui stealth35 j'ai essayé le tiens, mais sans succès. Merci quand même.
    montre ton code de test

  20. #20
    Invité
    Invité(e)
    Par défaut
    Bon j'ai résolu mon problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $pattern = "/([a-zA-Z])('')/";
    $replacement = "$1'";
    $a = preg_replace($pattern, $replacement, $a);
    Résultat:
    d''une -> d'une

    Merci à tous.

Discussions similaires

  1. remplacement des guillemets
    Par Hub2010 dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 28/05/2009, 14h56
  2. remplacer des espaces dans un champ par des zero
    Par yeep dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2004, 09h41
  3. Fonction permettant de remplacer des caractères
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 06/09/2004, 15h48
  4. [C#] Prob IndexOf sous Pocket Pc avec des guillemets
    Par freddyboy dans le forum Windows Mobile
    Réponses: 7
    Dernier message: 10/06/2004, 09h57
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

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