begin process at 2012 05 30 19:59:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Mise en évidence des mots recherchés


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mise en évidence des mots recherchés

jeudi 17 avril 2008 à 11:45:43 | Mise en évidence des mots recherchés

RPGamer

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.

Pour faire plus clair :

$city = 'Mon texte de base';
$keyword = 'mon';

$city = eregi_replace($keyword, "<strong>".$keyword."</strong>", $city);

Dans ce cas, $city vaut "mon texte de base" et non pas "Mon texte de base".

Comment faire pour que ça ne soit pas le cas ?

Merci d'avance



jeudi 17 avril 2008 à 13:16:36 | Re : Mise en évidence des mots recherchés

coucou747

Administrateur CodeS-SourceS
salut

le principe : il faut capturer la chaine qui correspond au motif : $keyword.

$city = eregi_replace('/('.$keyword.')/', '<strong>$1</strong>', $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...)
vendredi 18 avril 2008 à 17:36:02 | Re : Mise en évidence des mots recherchés

RPGamer

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().

Merci
vendredi 18 avril 2008 à 17:43:37 | Re : Mise en évidence des mots recherchés

coucou747

Administrateur CodeS-SourceS
$1 c'est la premiere chaine capturee par ()... c'est un truc specifique aux regexp.

pour le reste, je n'ai pas la reponse, c'est a toi de choisir ce que tu verouilles ou pas...
vendredi 18 avril 2008 à 17:55:41 | Re : Mise en évidence des mots recherchés

RPGamer

OK, merci :)

J'ai essayé d'autres possibilités comme :

$city = eregi_replace('/('.$keywords.')/', "<strong>$1</strong>", $city);

ou

$city = eregi_replace('/('.$keywords.')/', '<strong>'.$1.'</strong>', $city);

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 '$')
vendredi 18 avril 2008 à 18:10:33 | Re : Mise en évidence des mots recherchés

coucou747

Administrateur CodeS-SourceS
Réponse acceptée !
perso, je fais toujours des pregs, je connais mieux la syntaxe des pregs :

$city = preg_replace('/('.$keyword.')/', '<strong>$1</strong>', $city);

ca ca devrait marcher...

si ca ne marche pas, donne moi un exemple pour $keyword et $city.

$1 n'est pas une variable, c'est normal que ca parse error... c'est un truc specifique aux regexp, rien a voir avec le php...
samedi 19 avril 2008 à 19:37:31 | Re : Mise en évidence des mots recherchés

RPGamer

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 :

$city = preg_replace('/('.$keyword.')/i', '<strong>$1</strong>', $city);

Encore merci pour cette précieuse aide
dimanche 20 avril 2008 à 10:08:06 | Re : Mise en évidence des mots recherchés

coucou747

Administrateur CodeS-SourceS
clique sur reponse acceptee stp


Cette discussion est classée dans : base, texte, mots, city, recherchés


Répondre à ce message

Sujets en rapport avec ce message

Zone de texte [ par benett ] Bonjour à tous,comment faire pour cacher des zones de texte dans un tableau (Ces zones de texte résultent de la sélection de champs dans des base de d URGENT!!! GROS PROBLEME BASE DE DONNEES!!! [ par slog9 ] Slt!C pour la gestion dZun site internet, en fait pour la modification du texte.On arrive sur la page index ou lZon choisit le texte a modifier,et on Sauver uniquement les changements dans un texte [ par fluminis ] Bonjour,Voila ma base de donnees commence a devenir de plus en plus grosse et je voudrais reduire sa taille.Pour le moment je stocke dans ma base de d Combien de fois revient le texte ??? [ par Michael ] Salut !J'ai une table (base de données) à 3 colonnes dont une colonne "libellé"Dans une page (HTML) j'ai une zone de texte dans laquelle je saisi une Combien de fois revient le texte ??? [ par Michael ] Salut !J'ai une table (base de données) à 3 colonnes dont une colonne "libellé"Dans une page (HTML) j'ai une zone de texte dans laquelle je saisi une Moteur de recherche [ par atoguum4ever ] aTomicK Salut à tous,je cherche a faire un moteur de recherche en php et j'ai cru comprendre sur le forum que l Mettre en couleur les mots recherchés [ par lawat ] Bonjour à tous,Besoin d'aide, j'ai fait un petit moteur de recherche en php - Mysql et je peux faire une recherche avec plusieurs mots-clés.Et sais pa problème texte tableau > base de données [ par inconnue ] Bonjour, j'ai créé un tableau dynamiquement avec php dont une colonne affiche un texte issu d'une base de données et lorsqu'un long texte est entré da Récuperer des données dans une base et les mettre dans un champs texte [ par benz038 ] Salut J'ai un formulaire avec un tableau a plusieur colonnes dont une liste déroulante avec des codes!Je voudrai récuperer les données correspondant a Liste déroulante, base de données et champs de texte [ par tenrod ] Bonjour a tous j'aimerai pouvoir mettre à jour un champs de texte à partir de ce que j'ai sélectionné dans une liste déroulante...Je m'explique:J'ai c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales