RPGamer
Messages postés10Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention25 juillet 2008
-
17 avril 2008 à 11:45
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 2012
-
20 avril 2008 à 10:08
Bonjour à tous ^^
Je suis en train de développer un moteur de recherche pour mon site. J'ai décidé de mettre les mots recherchés en gras dans les résultats. Ca fonctionne bien, mais comme je suis pinailleur, j'aimerais que la fonction eregi_replace() qui ne prend pas en compte la casse au moment de la recherche du terme ne remplace pas le mot trouvé par celui tappé par l'utilisateur mais par celui qui est stocké dans la table MySQL.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 17 avril 2008 à 13:16
salut
le principe : il faut capturer la chaine qui correspond au motif : $keyword.
$city = eregi_replace('/('.$keyword.')/', '$1', $city);
un truc comme ca ?
sinon, juste un petit conseil de securite : si $keyword est defini par l'utilisateur, alors, il peut faire en sorte que la page mette 30 secondes a s'excuter (imagine si il demande cette page 10 fois par seconde, juste pour t'embeter...)
RPGamer
Messages postés10Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention25 juillet 2008 18 avril 2008 à 17:36
Salut,
J'ai essayé ton botu de code, et ça n'a pas l'air de marcher.
Sinon, d'où est-ce que tu sors la variable $1 ?
Au niveau de la sécurité, effecfivement j'imagine que n'importe quelle page peut être demandée un nombre quasi illimité de fois, mais est-ce vraiment utile de s'assurer sur chacunes des nombreuses pages du site qu'elle n'a pas été demandée x fois en un temps x par une IP donnée ?
$keywords est en fait un tableau qui contient chaque mots tapé par l'utilisateur dans le champ. J'utilise une boucle foreach() pour mettre les termes recherchés en gras. Je m'assure aussi qu'il n'y aie pas de HTML avec la fonction strip_tags().
Dans le premier cas, rien n'est mis en gras, dans l'autre, un message d'erreur m'indique apparement qu'il ne connait pas $1...
(Parse error: syntax error, unexpected T_DNUMBER, expecting T_VARIABLE or '$')
RPGamer
Messages postés10Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention25 juillet 2008 19 avril 2008 à 19:37
Salut ^^
J'ai testé ta ligne. Le résultat est encourageant, si je tape "parking", le mot en question est mis en gras. Mais si il s'agit du mot "Parking", il n'est pas mis en gras. Il faudrait donc que la fonction de mise en gras ne tienne pas compte de la casse.
En me renseignant sur la question, j'ai trouvé sans trop de mal la bonne syntaxe :