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 :

oreg_replace recherche d'accent ? [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut oreg_replace recherche d'accent ?
    Bonjour,
    je travail sur un système de maillage interne. le principe est simple je recherche des mots clé et si il sont présent je les remplace par un lien vers la page concerné.

    J'ai donc fait ceci :

    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
     
    $articleTexte = $articlePage['texte'];
    // MAILLAGE INTERNE
    $requete = ("SELECT * FROM `maillage` ORDER BY id DESC");	
    $resultat = mysql_query($requete );
    while ($row = mysql_fetch_array($resultat)){
    	$mot = html_entity_decode($row['mot'], ENT_QUOTES, 'UTF-8');
    	$title = html_entity_decode($row['title'], ENT_QUOTES, 'UTF-8');
    	$lien = html_entity_decode($row['lien'], ENT_QUOTES, 'UTF-8');
     
    	$patterns = array();
    	$patterns[0] = '/\s'.$mot.'\b/i';
    	$replacements = array();
    	$replacements[0] = " <a href='".$lien."' title='".$title."' class='Lien_Centre_Titre_T".$articleThemeId."' style='font-size:14px;font-family: Arial;'>".$mot."</a>";
    	$articleTexte = preg_replace($patterns, $replacements, $articleTexte, $limit = 2);
    }
    echo $articleTexte ;
    Les mots sans accents sont remplacer sans problème, mais les mots avec accents ne sont pas pris en compte.

    A noter que mes accents sont stocké en html exemple : sexualit&eacute; pour séxualité

    Quelqu'un aurait une solution a me proposer ?

    Cordialement,
    Tentsuken

  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 727
    Points
    10 727
    Par défaut
    les accents non pas a être stocker en html, apres si c'est pour faire du rewriting, c'est pas grave d'avoir des accents dans l'adresse

  3. #3
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut
    Comme je l'ai dit plus haut, il ne s'agit pas d'url rewriting mais de maillage interne (remplacer un mot par un lien).

  4. #4
    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 727
    Points
    10 727
    Par défaut
    t'as un exemple de ce que contiendrai $mot et $lien ?

  5. #5
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut
    Exemple qui fonctionne :
    $mot : celibat
    $lien : urlpageassociéeaumot.html

    Exemple qui ne fonctionne pas à cause de l'accent:
    $mot: sexualit&eacute;
    $lien: urlpageassociéeaumot.html

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Points : 673
    Points
    673
    Par défaut
    Bonjour,

    au lieu de faire html_entity_code, pourquoi ne pas convertir les accents è = e par exemple ?

  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 727
    Points
    10 727
    Par défaut
    fais pas de html_entity_decode alors,

    et fais un htmlentites sur ton texte

  8. #8
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par syl2095 Voir le message
    Bonjour,
    au lieu de faire html_entity_code, pourquoi ne pas convertir les accents è = e par exemple ?
    Car je ne veut pas supprimer les accents de mes articles.

    fais pas de html_entity_decode alors,
    et fais un htmlentites sur ton texte
    Je vais tester, mais je radote, les accents sont stocké dans ma base par leur balise html comme &eacute; pour é par exemple et je ne peut pas faire autrement.

  9. #9
    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 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tentsuken Voir le message
    Car je ne veut pas supprimer les accents de mes articles.


    Je vais tester, mais je radote, les accents sont stocké dans ma base par leur balise html comme &eacute; pour é par exemple et je ne peut pas faire autrement.
    ouai, faut pas faire ca, mais bon si tout les en entités ca change rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    phrase : saison &eacute;t&eacute;
    mot : &eacute;t&eacute;
    lien : <a href="truc"></a>
     
    final :  saison <a href="truc">&eacute;t&eacute;</a>

  10. #10
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut
    Je vient de trouvé la réponse à mon problème.

    Pour ceux que cela interesse:

    Modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patterns[0] = '/\s'.$mot.'\b/i';
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patterns[0] = '/ '.$mot.' /';
    Cordialement,
    Tentsuken

  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 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tentsuken Voir le message
    Je vient de trouvé la réponse à mon problème.

    Pour ceux que cela interesse:

    Modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patterns[0] = '/\s'.$mot.'\b/i';
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $patterns[0] = '/ '.$mot.' /';
    Cordialement,
    Tentsuken
    pour un mot c'est
    '/\b'.$mot.'\b/i'

    imagine que t'ai un point ou une virgule, et fais un preg_quote sur le mot aussi

  12. #12
    Membre du Club Avatar de tentsuken
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 89
    Points : 54
    Points
    54
    Par défaut
    Ta solution peut fonctionner avec mon site seulement si je peut simuler un espace.

    Comment symboliser un espace ?
    Pour avoir par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '/\b{espace}'.$mot.'{espace}\b/i'

  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 727
    Points
    10 727
    Par défaut
    Citation Envoyé par tentsuken Voir le message
    Ta solution peut fonctionner avec mon site seulement si je peut simuler un espace.

    Comment symboliser un espace ?
    Pour avoir par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '/\b{espace}'.$mot.'{espace}\b/i'
    ca ne marchera pas \b c'est une limite le mot, c'est pas un caractere en soi

    EDIT : en regardant les limtie de mot de marche pas avec les entités, je te conseil de faire un html_entity_decode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $str = 'saison &eacute;t&eacute;';
    $rep = '&eacute;t&eacute;';
     
    $regex = preg_quote(html_entity_decode($rep, ENT_COMPAT, 'utf-8'));
    echo preg_replace("/\b($regex)\b/uie", "sprintf('<a href=\"\">%s</a>', htmlentities('$1', ENT_COMPAT, 'utf-8'))",html_entity_decode($str, ENT_COMPAT, 'utf-8'));

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

Discussions similaires

  1. [MySQL] Mise en surbrillance de termes de recherches et accents
    Par big_ben3333 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 18/07/2011, 16h38
  2. [MySQL] Fonction rechercher et accents
    Par Alesque258 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/05/2008, 17h21
  3. recherche multicritere accent
    Par luz_negra dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/11/2007, 02h05
  4. Recherche sans accents
    Par cerede2000 dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/05/2007, 21h36
  5. [MySQL] Moteur de recherche avec accents
    Par NiX31 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/01/2007, 12h27

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