Bonjour
Il semble y avoir un soucis de "logique" avec la recherche. En effet, en l'état actuel des choses, il n'est pas possible de "trouver" des mots-clés s'ils sont entourés d'un quelconque signe de ponctuation. Par exemple, un membre a fini une phrase par "me contacter
.", il est impossible de trouver le mot "contacter" à cause du point qui termine la phrase et qui est collé au mot.
La solution serait d'ajouter les signes de ponctuation avec [:punct:] dans la recherche:
foreach ($key_ary AS $value)
{
$value = trim($value);
$where_keyword .= ' (s.sujet_nom REGEXP "(^|[[:blank:][:punct:]])' . preg_quote($value, '"') . '([[:blank:][:punct:]]|$)" OR mes.message_texte REGEXP "[[:blank:][:punct:]]' . $value . '[[:blank:][:punct:]]") ' . $type;
}
$where_keyword = substr($where_keyword, 0, -strlen($type));
Le problème ici est qu'on va se retrouver à pouvoir rechercher dans les balises html stockées en BDD avec le message. Du coup, si on cherche "img", la recherche va le trouver et le résultat sera pourri à cause de la mise en évidence des mots-clés (en les entourant d'un <span> qui surligne en jaune par exemple). Bien sûr, une solution serait de ne pas mettre en évidence les mots-clés trouvés...
Y'a-t'il un moyen de pouvoir faire un strip_tags() directement dans la clause WHERE de la recherche ?
Sinon, il semble que la seule solution pour offrir une fonction de recherche qui soit vraiment pertinente soit de stocker le message deux fois, une fois pour affichage avec les balises html et tout le bazard, et une autre fois en ne stockant que le texte simple.
C'est aussi un problème à prendre en compte pour FSB2 puisqu'il n'y a qu'un seul champ en BDD pour le contenu du message.