|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
Fredo Nouveau WRInaute
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Lun Sep 22, 2003 18:49 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
Salut,
Connaissez-vous le moyen de rechercher en PHP un mot dans une base quelconque avec ou sans accent ?
Merci beaucoup.
Fredo[/quote] |
|
| |
|
 |
Remi L. WRInaute accro

Inscrit le: 06 Sep 2003 Messages: 1060
|
Posté le : Lun Sep 22, 2003 18:57 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
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: |
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

Inscrit le: 14 Oct 2002 Messages: 11300
|
Posté le : Lun Sep 22, 2003 19:12 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
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 ? |
|
| |
|
 |
George Abitbol WRInaute accro

Inscrit le: 06 Juin 2003 Messages: 1922
|
Posté le : Lun Sep 22, 2003 21:00 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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 |
|
| |
|
 |
JPC WRInaute passionné

Inscrit le: 02 Juin 2003 Messages: 564
|
Posté le : Lun Sep 22, 2003 22:41 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| de toutes façons, l'attitude par rapport aux majuscules particulièrement, et aussi aux accents, ça dépend fortement de la base de données et de sa configuration... |
|
| |
|
 |
Fredo Nouveau WRInaute
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Mar Sep 23, 2003 9:16 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Mar Sep 23, 2003 9:23 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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: |
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
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Mar Sep 23, 2003 10:41 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
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) ? |
|
| |
|
 |
The Jedi WRInaute passionné

Inscrit le: 31 Mar 2003 Messages: 807 Localisation: Bordeaux
|
Posté le : Mer Sep 24, 2003 20:38 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| Et actuellement ça te retourne quoi pour l'exemple avec le mot 'évènement' ? |
|
| |
|
 |
Fredo Nouveau WRInaute
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Jeu Sep 25, 2003 9:18 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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

Inscrit le: 14 Oct 2002 Messages: 11300
|
Posté le : Jeu Sep 25, 2003 11:09 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| SELECT * FROM table WHERE champs like '$expression_recherchee' |
|
| |
|
 |
George Abitbol WRInaute accro

Inscrit le: 06 Juin 2003 Messages: 1922
|
Posté le : Jeu Sep 25, 2003 11:11 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
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 |
|
| |
|
 |
JPC WRInaute passionné

Inscrit le: 02 Juin 2003 Messages: 564
|
Posté le : Jeu Sep 25, 2003 13:49 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
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
Inscrit le: 17 Sep 2003 Messages: 7
|
Posté le : Ven Sep 26, 2003 10:11 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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

Inscrit le: 06 Juin 2003 Messages: 1922
|
Posté le : Ven Sep 26, 2003 10:57 Sujet du message: Gestion des accents pour un moteur de recherche PHP |
|
|
| 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 mais quand j'ai fait mes tests, c'était avec = et pas avec LIKE (mais ça marche avec les deux).
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 |
|
| |
|
 |
| |
|
|