recherche avec REGEX

JOjo123
Invité n'ayant pas de compte PHPfrance

23 déc. 2005, 16:51

Salut a tous, j'ai un petit souci avec mon moteur de recherche.

Je souhaite pouvoir faire une recherche par mots clé dans un champ texte. J'utilise donc les expressions régulières pour trouver le mot dans le champ:

Code : Tout sélectionner

SELECT * FROM matable WHERE monchamp REGEXP '((\ +)|^)MOTCLE((\ +)|$)'
cette requete marche bien mais mon problème est qu'elle est sensible aux accents :(

je voudrai que mon expression régulière traite les "e", "é", "è", "ê" , etc. de la même manière.

une idée?

merci a vous.

(ce message n'étant pas vraiment du PHP ou du SQL, dans le doute je le poste dans les deux forums)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 déc. 2005, 02:28

Bonsoir,

Tu ne pourrais pas utiliser un like dans ta requète SQL?
SELECT * FROM matable WHERE monchamp LIKE '% MOTCLE %' OR monchamp LIKE '% MOTCLE' OR monchamp LIKE 'MOTCLE %' OR monchamp = 'MOTCLE'
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 déc. 2005, 12:16

modération : le multi-postage est interdit sur PHPFrance

L'autre message est parti à la poubelle
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 649 Messages

30 déc. 2005, 22:45

Tu ne pourrais pas utiliser un like dans ta requète SQL?
Je crois que REGEXP est plus approprié car avec un like, on se retrouve avec parfois ce que l'on ne veut pas => Je cherche la lettre "i", je me retrouve avec tout les résultat contenant un mots contenant un i :shock: mais ça, on pourrait en débattre longtemps, ça dépend de la manière dont les mots-clés sont enregistrés dans sa table, pour mon cas personnel, REGEXP convient mieux.

Pour ton problème d'accent, sous quelle forme les accents sont enregistrés dans la base? en clair? en caractères spéciaux?
Image