Bonjour
J'utilise l'expression suivante dans la class de mon moteur de recherche pour afficher les 15 mots précédents et suivants le mot clé ($cles) tappé par mes visiteurs :
preg_match_all(sprintf('`(\b(?:[^\s]+\s){0,15}%s(?:\s[^\s]+){0,15}\b)`i', $cles), html_entity_decode(strip_tags($row[7])), $matches, PREG_SET_ORDER);
$tab[$compteur][7]= preg_replace('#'.$cles.'#i', '<span style="background:#FF3">'.$cles.'</span>', $matches[0][0]);
Mon problème est que lorsque mes visiteurs tappent un mot qui est inclus dans un mot de ma BDD (exemple : ils tappent 'voiture' et dans la base j'ai 'voitures'), je n'ai aucun résultat à l'affichage ... De même si mes visiteurs tappent ''voiture' et que dans ma base le mot est suivi d'une virgule ou d'une parenthèse ou que n'importe quel caractère entoure le mot sans espace.
Avez-vous des idées pour corriger mon problème ?
Message édité par inspecteurmota le 04-10-2011 à 11:38:10