Gestion des accents pour un moteur de recherche PHP
24 messages
• Page 1 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

Remi L. - WRInaute passionné

- Messages: 1063
- Inscription: 6 Sep 2003
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: 14 Oct 2002
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 passionné

- Messages: 1923
- Inscription: 6 Juin 2003
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
- Fredo
- Nouveau WRInaute

- Messages: 7
- Inscription: 17 Sep 2003
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
- Fredo
- Nouveau WRInaute

- Messages: 7
- Inscription: 17 Sep 2003
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.
- Fredo
- Nouveau WRInaute

- Messages: 7
- Inscription: 17 Sep 2003
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) ?
- Fredo
- Nouveau WRInaute

- Messages: 7
- Inscription: 17 Sep 2003
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: 14 Oct 2002
SELECT * FROM table WHERE champs like '$expression_recherchee'
-

George Abitbol - WRInaute passionné

- Messages: 1923
- Inscription: 6 Juin 2003
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
- JPC
- WRInaute impliqué

- Messages: 565
- Inscription: 2 Juin 2003
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
)
- Fredo
- Nouveau WRInaute

- Messages: 7
- Inscription: 17 Sep 2003
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 passionné

- Messages: 1923
- Inscription: 6 Juin 2003
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
24 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 les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- [PHP] moteur de recherche interne, requête insensible aux accents
- [Résolu] Moteur de recherche interne et les accents
- Création d'un moteur de recherche gérant les accents
- Problème avec accents dans moteur de recherche perso
- Recherche un script de gestion de fichiers en PHP
- Recherche Appli PHP/MYSQL Gestion Demande Informatique
- Développer un moteur de recherche en PHP.
- [RECHERCHE] Meta Moteur en PHP
- gestion des accents
- PHP/Mysql: moteur de recherche interne
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Google Code Search : moteur de recherche de codes sources - 05-10-2006
- L'extension Web Developer pour Google Chrome - 22-03-2010
- Tester son positionnement dans Exalead avec Agent Web Ranking - 30-01-2006
- Lancement de Mozbot - 27-06-2005
- Découpage du forum webmaster en 2 forums - 10-08-2005
- Gestion des droits d'accès dans Google Webmaster Tools - 03-03-2010
- L'indice de densité idéal pour le référencement - 14-09-2009
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
