Aller au contenu

Highlight de critère de recherche


Sujets conseillés

Posté

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 :

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

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, @+

Posté

Salut ElMoustiko,

En php4, tu as eregi_replace( string pattern, string replacement, string string ), non ?

Posté

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 ?

Posté

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 ;)

return str_replace($search, "<span class=\"critere_recherche\">\\0</span>", $chaine);

devrait laisser la casse intacte.

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...