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 :

Problème avec preg_replace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 38
    Par défaut Problème avec preg_replace
    Dans mon application je recherche tous les textes qui contiennent un certain mot, par exemple Eglise, et je souhaite mettre les mots trouvés en surbrillance.
    Tous les mots avec ou sans accents doivent être trouvés.

    Pour ce faire je transforme le critère reçu (ici $critere="Eglise") avec des instructions preg_replace, c'est à dire dans le cas présent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $critere = preg_replace('/[eèéêë]/i', '(e|è|é|ê|ë)', $critere);
    $critere = preg_replace('/[iìíîï]/i', '(i|ì|í|î|ï)', $critere);
    Ensuite je lance la recherche du critère dans mon texte avec une instruction preg_match :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb=preg_match_all($critere, $texte, $matches, PREG_OFFSET_CAPTURE);
    Il se trouve que seuls Eglise et eglise sont trouvés, mais pas église

    Merci à qui pourra me dire où est mon problème.
    Caperquy

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    cherche du coté de l'encoding accepté par la fonction preg_replace. si tu n'as pas le bon encodage, ça marchera pas.

  3. #3
    Expert confirmé

    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
    Par défaut
    ton preg_replace n'est pas bon :
    église va devenir : (e|è|é|ê|ë)(e|è|é|ê|ë)glis(e|è|é|ê|ë)

    si tu veux supprimer les accents fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $critere = 'église';
    echo preg_replace('/[èéêë]/ui', 'e', $critere);
    mais bon c'est de la bidouille tout ca...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 38
    Par défaut Problème avec preg_replace
    Merci pour la réponse.
    En fait je ne cherche pas à supprimer les accents, mais seulement à localiser le mot, qu'il ait ou non un accent.

    CapErquy

  5. #5
    Expert confirmé

    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
    Par défaut
    Citation Envoyé par CapErquy Voir le message
    Merci pour la réponse.
    En fait je ne cherche pas à supprimer les accents, mais seulement à localiser le mot, qu'il ait ou non un accent.

    CapErquy
    sauf qu'il fait la différence entre un mot avec accents et un mot sans accents, donc t'es bien obligé de tout mettre au même niveau, a la base c'est pour faire quoi ? ton texte il vient d'où ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 38
    Par défaut
    Mon texte vient d'une base de données MySQL dans laquelle se trouvent des résumés d'articles. L'utilisateur cherche à retrouver quels articles traitent d'un sujet identifié par le mot clé qu'il a choisi. En retour je veux lui renvoyer le ou les articles trouvés avec le ou les mots correspondants mis en surbrillance.
    Au départ on ignore donc si dans les différents articles on trouvera le mot cherché avec ou sans accents.
    CapErquy

Discussions similaires

  1. [RegEx] problème avec preg_replace
    Par mike_chti dans le forum Langage
    Réponses: 2
    Dernier message: 29/09/2008, 17h12
  2. [RegEx] UTF8, problème avec preg_replace
    Par Space Cowboy dans le forum Langage
    Réponses: 4
    Dernier message: 30/04/2008, 16h42
  3. [RegEx] Problème avec preg_replace
    Par Vinzius dans le forum Langage
    Réponses: 6
    Dernier message: 27/05/2006, 23h10
  4. [RegEx] Problème avec preg_replace
    Par Vinzius dans le forum Langage
    Réponses: 4
    Dernier message: 08/05/2006, 01h06
  5. [RegEx] problème avec preg_replace
    Par carlos20 dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2005, 10h29

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