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 et accents : encore un problème


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut preg_replace et accents : encore un problème
    Bonsoir,

    je souhaite utiliser un preg_replace qui gère correctement les accents.

    Par exemple, je souhaite trouver -et remplacer - le mot français "âme", quelle que soit sa forme : "âme", "ame", "Âme".

    Pour cela, je pensais utiliser le pattern suivant :

    /\b[a|à|á|â|ã|ä|å]me\b/i

    en principe,

    - insensible à la casse (i)
    - cherchant des mots isolés (b)
    - la première lettre peut être : a|à|á|â|ã|ä|å

    Mais cela ne marche pas.

    En fait, ce pattern fonctionne avec preg_match_all mais pas avec preg_replace. Et il fonctionne aussi sans l'option "b"...

    Comprenez-vous pourquoi et comment faire pour que cela fonctionne ?

    merci pour votre aide,

    JG.

    PS : je précise que pour moi la solution donnée ici (option "u") ne fonctionne pas.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Remplace tes crochets par des parenthèses.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci, mais cela ne change rien.

    (cependant, quelle est la différence ?)

    JG

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Remplace tes crochets par des parenthèses.
    Pas tout à fait, ceci serait plus correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\b[aàáâãäå]me\b/i
    Du coup, chez moi, cela donne ceci (avec un fichier encodé en utf-8) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $str = 'ame âme Ame Âme';
    $reg = '/\b[aàáâãäå]me\b/ui';
    $out = preg_replace($reg, 'tamashi', $str);
    print_r($out);

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre aide.

    En fait, le problème semblait venir de l'encodage des caractères, et j'ai pu le résoudre en réglant la variable "LOCALE" ainsi :

    setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1') ;

    cordialement,

    JG.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    je pense qu'un modifier u aurait fait l'affaire ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/09/2008, 13h24
  2. Encore des problèmes avec le BDE
    Par Flint dans le forum C++Builder
    Réponses: 19
    Dernier message: 31/12/2007, 23h26
  3. [XSL] Problème d'accent (encore!)
    Par HydN- dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/07/2007, 11h22
  4. Encore un problème d'accent
    Par tom42 dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 12h09
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

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