recherche avec accent ou sans

recherche avec accent ou sans - PHP - Programmation

Marsh Posté le 26-07-2006 à 12:10:47    

Bonjour,
j'ai fait un metit moteur de recherche dans mon site web. Sauf que ce moteur de recherche ne gère pas les accents, dans le sens ou chercher "bebe" ne retourne pas "bébé" et vice versa.
Il y a certainement un moyen de contourner ça.
Quelqu'un a une idée?
merci

Reply

Marsh Posté le 26-07-2006 à 12:10:47   

Reply

Marsh Posté le 26-07-2006 à 12:12:30    

avec un index fulltext les accents sont ignorés
 
sinon faudrait doubler ta clause where (avec accents OU sans accents)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 12:15:07    

La base de donnees est mysql, je n'ai pas le type fulltext. Il y a un equivalent à ça en mysql?

Reply

Marsh Posté le 26-07-2006 à 12:17:18    

et pour la deuxième solution elle ne marche plus dès que j'ai un mot avec deux "e", l 'un avec un accent et pas l 'autre.
 par exemple si j'ai dans ma base "bébe", ni "bebe" ni "bébé" ne me retourneront "bébe"

Reply

Marsh Posté le 26-07-2006 à 12:22:18    

regarde dans la doc mysql comment utiliser les recherches fulltext
 
et si tu compare les 2 chaines sans accents ça doit marcher (tu peux utiliser une regexp)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 13:51:51    

mbarekh a écrit :

La base de donnees est mysql, je n'ai pas le type fulltext. Il y a un equivalent à ça en mysql?


fulltext, c'est au niveau des index, pas au niveau du type de colone. ;)
Voir manuel de mysql pour plus d'infos.

Reply

Marsh Posté le 26-07-2006 à 14:15:56    

like ?

Reply

Marsh Posté le 26-07-2006 à 15:13:00    

Oui ça marche avec fulltext enfin quand je fais directement la requete sur phpmyadmin. Mais quand je fais la requete à partir de mon site web ça ne marche pas.  
J'ai essayé de faire afficher la requete que mon site passe à la base pour mieux comprendre. Et là en voulant chercher le mot "bébé" par exemple, je vois le mot "béb&eacute" dans la requête.
J'ai compris alors que c'était un problème de charset.
Ma base est en "fr-iso-8859-1" alors que mes fichiers html sont en utf-8.
Y'at'il un moyen qui peut corriger ça? Par exemple une fonction qui fait la conversion?

Reply

Marsh Posté le 26-07-2006 à 15:27:42    

Reply

Marsh Posté le 26-07-2006 à 15:44:36    

j'étais imprécis, excuse moi. On fait ce que je voyais ce n'était pas "b&eacute,bé" mais plutot : "bébé"
 
je est mes fichiers sont bien en utf-8 et ma base en iso

Reply

Marsh Posté le 26-07-2006 à 15:44:36   

Reply

Marsh Posté le 26-07-2006 à 15:51:51    

en changeant le charset de la table ça devrait aller (fais une sauvegarde avant :p )


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 15:56:48    

oui mais vers quelle charset. avec utf-8 ça ne marche pas aussi.

Reply

Marsh Posté le 26-07-2006 à 16:00:23    

mbarekh > Regarde bien ce qui est écrit dans la page que je t'ai indiqué au dessus. ;)
C'est la fonction qui permet de passer en php d'un format UTF-8 à un format ascii.


Message édité par omega2 le 26-07-2006 à 16:01:09
Reply

Marsh Posté le 26-07-2006 à 16:03:59    

tu pourrais pas nous filer une url pour qu'on teste ?
 
quand tu dis que tes fichiers sont en utf-8 tu parle des sources, mais tu génère de l'html dans quel encodage ?
 
sinon ça serait plutôt l'inverse, lire de l'iso pour en faire de l'utf8 donc utf8_encode() :p


Message édité par Sh@rdar le 26-07-2006 à 16:04:08

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 16:35:50    

une url ca ne marchera pas car il y a un parefeu qui bloques ls requetes venant de l'exterieur. (je ne suis pas chez moi).mais sinon quand je sis queles fichiers sont en tuf_ ca voudrait dire que dans mes source j'ai:
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
sinon dans le menu affichage->codage c'est selection automatique qui coché

Reply

Marsh Posté le 26-07-2006 à 16:40:02    

et le serveur envois bien la même chose dans les entêtes ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-07-2006 à 16:52:23    

mbarekh > Pour envoyer une page en utf-8, il y a trois chôses à faire :
1) encoder en utf-8 toutes les chaines qui seront envoyé au client (utf8_encode par exemple pour les chaines qui étaient en ascii)
2) envoyer le header correspondant à l'encodage utf-8 choisit (c'est faisable en php, mais ca peut aussi être réglé au niveau du serveur ce qui permet de ne pas le faire en php)
3) mettre la balise "meta" "content-type"
 
Si l'une des trois étapes n'est pas faite ou pas faite entiérement, alors l'affichage des caractéres risque d'être loupé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed