Version complète: sur le forum Webmaster Hub : Highlight de critère de recherche
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
ElMoustiko
Salut tout le monde, je rencontre un petit soucis, je cherche à faire un surlignement/highlight d'une portion de texte dans une page, mais c'est sensible à la casse. Je vous donne ce que j'ai fait :
CODE
function highlight($chaine, $search)
{
    return str_replace($search, "<span class=\"critere_recherche\">".$search."</span>", $chaine);

}


Et j'appelle ma fonction ensuite sur le texte d'une variable de SELECT dans une table mysql
CODE
highlight($data->pays, $_POST['recherche'])


Bon, ça marche bien, mon moteur de recherche me sort pleins de résultat en rapport avec ma recherche (encore heureux).
Mais le hic c'est que le highlight ne surligne que la portion exacte de ce que je recherche.
Genre je fait une recherche sur animation dans ma table, il va me sortir Japanimation et Animation (logique), et ne va surligner QUE le animation de Japanimation. Si je recherche Animation (notez la majuscule) il va me surligner Animation et pas le animation de Japanimation.

Tout ceci est logique par rapport à la fonction utilisé, je pense qu'un str_ireplace() réglerais le problème (même pas certain) mais c'est uniquement PHP5 et je n'y ai pas accès.

Donc je me demandais si vous saviez comment faire pour surligner le terme de recherche en ne se souciant pas de la casse. Qu'il me surligne Animation ET animation dans la recherche animation ou Animation.

Merci bien si vous vous penchez sur la question, @+
Dan
Salut ElMoustiko,

En php4, tu as eregi_replace( string pattern, string replacement, string string ), non ?
ElMoustiko
Wé, j'avais testé, mais là ça remplace Animation par animation dans le texte.

Genre j'ai Animation et Japanimation, je recherche animation, avec eregi_replace, ça highlight les 2 mais en remplaçant Animation par animation surligné
Tu vois le truc ?

En fait, je veux highlighter (mdr le vieux barbarisme) le terme de recherche quelque soit la casse MAIS sans changer la casse.

C'est peut être pas possible ?

Tiens, bah le moteur du HUB le fait comme je veux :

http://www.webmaster-hub.com/index.php?act...hlite=Animation

Tu vois le truc :s

Tien par contre, il highlight pas Japanimation
Le moteur ne doit pas être le même que moi. Je pense pas que ça change grand chose, si ?
Dan
Salut,

Il faut remplacer le deuxième $search de l'expression par \\0 pour donner le résultat obtenu par la recherche.
En remettant à nouveau $search, tu remplaces cela par le mot que tu recherches, dans la casse que tu auras donnée. Donc elle peut changer wink.gif
CODE
return str_replace($search, "<span class=\"critere_recherche\">\\0</span>", $chaine);
devrait laisser la casse intacte.

Dan
ElMoustiko
Wala impec Dan, ça fonctionne, merci à toi wink.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.