ElMoustiko Posté 9 Janvier 2005 Posté 9 Janvier 2005 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, @+
Dan Posté 9 Janvier 2005 Posté 9 Janvier 2005 Salut ElMoustiko, En php4, tu as eregi_replace( string pattern, string replacement, string string ), non ?
ElMoustiko Posté 9 Janvier 2005 Auteur Posté 9 Janvier 2005 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 Posté 9 Janvier 2005 Posté 9 Janvier 2005 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
ElMoustiko Posté 9 Janvier 2005 Auteur Posté 9 Janvier 2005 Wala impec Dan, ça fonctionne, merci à toi
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant