Gestion des accents pour un moteur de recherche PHP
21 messages • Page 1 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
Je n'ai peut-être pas bien compris ta question mais il suffit de stocker les données dans ta base sans accent et d'enlever les accents du mot recherché avant de fouiller dans tes petits octets...
Pour enlever les accents tu peux utiliser un truc du genre:
C'est une solution ultra-simple, il y en a d'autres...
Pour enlever les accents tu peux utiliser un truc du genre:
- Code: Tout sélectionner
function sans_accent($chaine)
{
$accent ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
$noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
return strtr(trim($chaine),$accent,$noaccent);
}
C'est une solution ultra-simple, il y en a d'autres...
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
dans sa base, il a :
événement
évènement
evenement
en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
c'est bien cela ?
événement
évènement
evenement
en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
c'est bien cela ?
-

George Abitbol - WRInaute accro

- Messages: 1923
- Inscription: Ven Juin 06, 2003 7:57
mahefarivony a écrit:en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
Pour ma part, avec MySQL et en ne faisant rien de spécial, c'est ce qui se produit.
Mes champs sont de type TEXT (insensible à la casse). Il en serait peut-être autrement avec un champ BLOB.
Fred
mahefarivony a écrit:dans sa base, il a :
événement
évènement
evenement
en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
c'est bien cela ?
Exactement
Avec l'inverse éventuellement : en cherchant évènement on trouverait evenement
Remi L. a écrit:Je n'ai peut-être pas bien compris ta question mais il suffit de stocker les données dans ta base sans accent et d'enlever les accents du mot recherché avant de fouiller dans tes petits octets...
Pour enlever les accents tu peux utiliser un truc du genre:
- Code: Tout sélectionner
function sans_accent($chaine)
{
$accent ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
$noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
return strtr(trim($chaine),$accent,$noaccent);
}
C'est une solution ultra-simple, il y en a d'autres...
------------------------
Merci pour cette astuce. Le problème est que les chaînes stockées dans des champs 'VARCHAR' et 'TEXT' contiennent nécessairement des accents. Je vais voir comment adapter cette fonction.
Ma requête SQL de recherche est du genre :
SELECT * FROM table WHERE champs = '$expression_recherchee'
Le but étant de supprimer les accents, on applique la fonction sans_accent() sur la variable PHP $expression_recherchee.
Mais il faut aussi appliquer le même genre de fonction (en version SQL) sur le champs de la table.
Existe-t-il une astuce (équivalent SQL de strtr() ou autre) ?
SELECT * FROM table WHERE champs = '$expression_recherchee'
Le but étant de supprimer les accents, on applique la fonction sans_accent() sur la variable PHP $expression_recherchee.
Mais il faut aussi appliquer le même genre de fonction (en version SQL) sur le champs de la table.
Existe-t-il une astuce (équivalent SQL de strtr() ou autre) ?
The Jedi a écrit:Et actuellement ça te retourne quoi pour l'exemple avec le mot 'évènement' ?
Quand je tape 'évènement', mon moteur ne peut retourner que 'évènement' (et pas 'evenement').
Quand je tape 'evenement', mon moteur ne peut retourner que 'evenement' (et pas 'évènement').
Autrement dit, il ne peut faire la recherche que sur le mot tel qu'il est saisi au clavier.
-

mahefarivony - WRInaute accro

- Messages: 11405
- Inscription: Lun Oct 14, 2002 10:00
SELECT * FROM table WHERE champs like '$expression_recherchee'
-

George Abitbol - WRInaute accro

- Messages: 1923
- Inscription: Ven Juin 06, 2003 7:57
Ta base de données c'est Mysql ? Quelle version ? Le type de tes champs ?
Parce que je viens encore de tester pour être sûr, et avec un champ TEXT ou VARCHAR, 'événement' ressort pour une recherche sur 'evenement', 'évenement', 'événement', 'évênëmènt', etc.
Et inversement, 'evenement' ressort pour une recherche sur 'événement', 'evénement', etc.
Fred
Parce que je viens encore de tester pour être sûr, et avec un champ TEXT ou VARCHAR, 'événement' ressort pour une recherche sur 'evenement', 'évenement', 'événement', 'évênëmènt', etc.
Et inversement, 'evenement' ressort pour une recherche sur 'événement', 'evénement', etc.
Fred
c'est clair chaque base a sa façon de gérer les majuscules et accents, ses paramètres à ce sujet etc... et même son langage, si tu voulais trnasformer le contenu (transac-sql pour sql serveur pour l'exemple puisque lui a même un nom
)
George Abitbol a écrit:Ta base de données c'est Mysql ? Quelle version ? Le type de tes champs ?
Parce que je viens encore de tester pour être sûr, et avec un champ TEXT ou VARCHAR, 'événement' ressort pour une recherche sur 'evenement', 'évenement', 'événement', 'évênëmènt', etc.
Et inversement, 'evenement' ressort pour une recherche sur 'événement', 'evénement', etc.
Fred
Ma base est de type MySQL et mes champs des TEXT et VARCHAR.
Maintenant, ça marche. J'ai enfin compris que la fonction LIKE permet la recherche d'une chaîne de caractères sans tenir compte des accents.
Vos réponses m'ont beaucoup aidé. Merci !
-

George Abitbol - WRInaute accro

- Messages: 1923
- Inscription: Ven Juin 06, 2003 7:57
Fredo a écrit:J'ai enfin compris que la fonction LIKE permet la recherche d'une chaîne de caractères sans tenir compte des accents
Je voudrais pas avoir l'air d'insister
Enfin bon, de toute façon, si c'est pour une recherche mieux vaut effectivement utiliser LIKE, mais alors autant le faire avec % de part et de d'autre du mot à rechercher...
LIKE '%eve%' <-- trouve 'eve', 'évènement', 'rêve', 'grèves', etc.
Fred
21 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gestion des langues et des sessions en PHP / MySQL
- Google Code Search : moteur de recherche de codes sources
- Tester son positionnement dans Exalead avec Agent Web Ranking
- Lancement de Mozbot
- Découpage du forum webmaster en 2 forums
- L'indice de densité idéal pour le référencement
- Alexa lance un moteur de recherche d'images
- Référencer un site multilingue
Consultez la description détaillée des produits ou services de Google suivants : Google SearchMash
- Analyse du positionnement
AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés. - Transformer des simples citations de votre site en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum