begin process at 2010 09 03 09:47:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de Caractères

 > PETIT MOTEUR DE RECHERCHE PAR MOT(S) CLÉ(S)

PETIT MOTEUR DE RECHERCHE PAR MOT(S) CLÉ(S)


 Information sur la source

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de Caractères Classé sous :moteur, recherche, mot, clé Niveau :Initié Date de création :19/04/2002 Date de mise à jour :19/04/2002 17:21:45 Vu / téléchargé :23 620 / 382

Auteur : Skyride

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Voici un petit code source sympa.

Il vérifie l'existence de mot(s) clé(s) que vous aurez saisi dans une chaîne de caractères et retourne la même chaîne de caractère avec les mot(s) clé(s) mis en valeur (ils seront soulignés et en italique).

NB : Dans mon exemple les mots clés doivent être séparés par des virgules.

Je vous mets à disposition le fichier Zip !

Source

  • <cfparam name="form.critere" default="va, Ceci, est">
  • <cfparam name="form.chaine" default="Ceci est la chaîne de caractères qui va servir de test">
  • <cfset ListeCritere = "#form.critere#">
  • <cfset chaine = "#form.chaine#">
  • <cfset newchaine = chaine>
  • <cfloop index="indice" list="#ListeCritere#" delimiters=",">
  • <cfset critere = "#indice#">
  • <cfset newpos = 1>
  • <cfif Len(newchaine) is not 0>
  • <cfset chaine = newchaine>
  • </cfif>
  • <cfset PosCritere = FindNoCase(#critere#, #chaine#,#newpos#)>
  • <cfif PosCritere GT 0>
  • <cfset newchaine =''>
  • </cfif>
  • <cfloop CONDITION = "(#PosCritere# GT 0)">
  • <cfset newchaine = newchaine & #Mid(chaine,newpos,PosCritere-newpos)#
  • & "<i><u>" & #Mid(chaine,PosCritere,len(critere))# & "</u></i>">
  • <cfset newpos = Poscritere + len(critere)>
  • <cfif PosCritere GT 0>
  • <cfset AntPosCritere = PosCritere>
  • </cfif>
  • <cfset PosCritere = FindNoCase(#critere#, #chaine#,PosCritere+1)>
  • <cfif PosCritere IS 0>
  • <cfif PosCritere LT len(critere)>
  • <cfset newchaine = newchaine & #Mid(chaine,AntPosCritere + len(critere),len
  • (chaine))#>
  • </cfif>
  • </cfif>
  • </cfloop>
  • </cfloop>
  • <br><br>
  • La chaine retournée est : <cfoutput>#newchaine#</cfoutput>
<cfparam name="form.critere" default="va, Ceci, est">
<cfparam name="form.chaine" default="Ceci est la chaîne de caractères qui va servir de test">


<cfset ListeCritere = "#form.critere#">
<cfset chaine = "#form.chaine#">
<cfset newchaine = chaine>

<cfloop index="indice" list="#ListeCritere#" delimiters=",">	
     <cfset critere = "#indice#">
     <cfset newpos = 1>
	
     <cfif Len(newchaine) is not 0>
	<cfset  chaine = newchaine>	
     </cfif>
	
     <cfset PosCritere = FindNoCase(#critere#, #chaine#,#newpos#)>
	
     <cfif PosCritere GT 0>
	<cfset newchaine =''>	
     </cfif>

     <cfloop CONDITION = "(#PosCritere# GT 0)">
          <cfset newchaine = newchaine & #Mid(chaine,newpos,PosCritere-newpos)# 
               & "<i><u>" & #Mid(chaine,PosCritere,len(critere))# & "</u></i>">
          <cfset newpos = Poscritere + len(critere)>
	
          <cfif PosCritere GT 0>
	<cfset AntPosCritere = PosCritere>
           </cfif>
		
           <cfset PosCritere = FindNoCase(#critere#, #chaine#,PosCritere+1)>

           <cfif PosCritere IS 0>
	<cfif PosCritere LT len(critere)>
	     <cfset newchaine = newchaine & #Mid(chaine,AntPosCritere + len(critere),len
                            (chaine))#>
	</cfif>			
            </cfif>
     </cfloop>
</cfloop>
<br><br>
La chaine retournée est : <cfoutput>#newchaine#</cfoutput> 

 Conclusion

Bon si vous avez des soucis avec le code, tenez moi au courant.

Par contre si vous avez des suggestions ou corrections à apporter à mon code, n'hesitez pas, je suis à votre écoute...

Bon courage

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip PAGINER LES RÉSULTATS D'UNE REQUÊTE
Source avec Zip GESTION DYNAMIQUE DES PAGES MULTI-PAYS
Source avec Zip ARBORESCENCE DE FICHIERS
RESPECTER LA MISE EN FORME DANS UN CHAMPS DE TYPE TEXTAREA
REGROUPEMENT DE JEUX D'ENREGISTREMENTS SUR UN CHAMPS D'UNE T...

 Sources de la même categorie

Source avec une capture RECHERCHER/REMPLACER par tonchebe
RÉSOLUTION DE VOS PROBLÈMES D'ACCENTS ET CARACTÈRES SPÉCIAUX par ABL-Online
METTRE EN GRAS UN OU PLUSIEURS MOTS RECHERCHÉS DANS UN TEXTE par lemulot
GENERER UN MOT DE PASSE ALÉATOIRE par jeanwebh
MANIPULATION DES TABLEAUX par Skyride

 Sources en rapport avec celle ci

Source avec Zip MOTEUR DE RECHERCHE VERITY SUR DES FICHIERS TEXTE... par mojojo
MOTEUR DE RECHERCHE DANS UNE BASE DE DONNÉES par Dadou911
METTRE EN GRAS UN OU PLUSIEURS MOTS RECHERCHÉS DANS UN TEXTE par lemulot
REQUÊTE DE RECHERCHE AVEC ACCENTUATION DES MOTS par jeanwebh
GENERER UN MOT DE PASSE ALÉATOIRE par jeanwebh

Commentaires et avis

Commentaire de bastoun le 21/04/2002 01:13:54

Ton code fonctionne correctement, mais si il s'agit de renvoyer ton texte avec tes expressions mises en valeur, il te suffit d'utiliser REReplace avec les RegExp

Je donne le code au cas où

&lt;cfparam name="form.critere" default="va, Ceci, est"&gt;
&lt;cfparam name="form.chaine" default="Ceci est la chaîne de caractères qui va servir de test"&gt;

&lt;cfset newChaine=REReplaceNoCase( form.chaine,  "(#ListChangeDelims(form.critere, '|' )#)",  "&lt;i&gt;&lt;u&gt;1&lt;/u&gt;&lt;/i&gt;" ,  "ALL" ) &gt;

&lt;cfoutput&gt;#newChaine#&lt;/cfoutput&gt;

Petites Explications :
Le premier argument de la fonction Rereplace est la chaine dans laquelle on recherche les expressions
Le deuxième contient les expressions recherchées
Le troisième indique par quoi remplacer l'expression trouvée
Le quatrieme est la portée ("ALL" pour toutes les occurences, "ONE" pour une seule)

Explication de l'expression recherché :
les () indiquent que l'on va rechercher un suite de caractères, et nous permet d'utiliser les backreferences.
le #ListChangeDelims(form.critere, '|' )# sert juste à transformer la chaine "va, Ceci, est" en "va| Ceci| est" , le | signifiant OU dans les regexp...
cela nous permet donc de rechercher les trois expressions en une seule opération

Le 1 (contenu dans ce qui doit remplacer la chaine trouvée) est une backreference, permettant de récupérer la chaine trouvée dans l'expression de recherche et contenue dans le premier bloc de parenthèse (ça tombe bien ici il n'y en a qu'un, si il y avait plusieurs blocs de parenthèses à la suite on pourrait utiliser 2 pour le deuxième, 3 pour le troisième etc)

Voilà, pour toute remarque, n'hésitez pas...

Commentaire de bastoun le 21/04/2002 01:17:17

/1

Commentaire de bastoun le 21/04/2002 01:20:18

Bon je recommence.. les backslashs ne sont pas passés... petit conseil n'oubliez pas de mettre un slash avant tout backslash avant insertion d'un code sinon ça ne passe pas ;-)

&lt;cfparam name="form.critere" default="va, Ceci, est"&gt;
&lt;cfparam name="form.chaine" default="Ceci est la chaîne de caractères qui va servir de test"&gt;

&lt;cfset newChaine=REReplaceNoCase( form.chaine,  "(#ListChangeDelims(form.critere, '|' )#)",  "&lt;i&gt;&lt;u&gt;/1&lt;/u&gt;&lt;/i&gt;" ,  "ALL" ) &gt;

&lt;cfoutput&gt;#newChaine#&lt;/cfoutput&gt;

Petites Explications :
Le premier argument de la fonction Rereplace est la chaine dans laquelle on recherche les expressions
Le deuxième contient les expressions recherchées
Le troisième indique par quoi remplacer l'expression trouvée
Le quatrieme est la portée ("ALL" pour toutes les occurences, "ONE" pour une seule)

Explication de l'expression recherché :
les () indiquent que l'on va rechercher un suite de caractères, et nous permet d'utiliser les backreferences.
le #ListChangeDelims(form.critere, '|' )# sert juste à transformer la chaine "va, Ceci, est" en "va| Ceci| est" , le | signifiant OU dans les regexp...
cela nous permet donc de rechercher les trois expressions en une seule opération

Le /1 (contenu dans ce qui doit remplacer la chaine trouvée) est une backreference, permettant de récupérer la chaine trouvée dans l'expression de recherche et contenue dans le premier bloc de parenthèse (ça tombe bien ici il n'y en a qu'un, si il y avait plusieurs blocs de parenthèses à la suite on pourrait utiliser /2 pour le deuxième, /3 pour le troisième etc)

Voilà, pour toute remarque, n'hésitez pas...

Commentaire de bastoun le 21/04/2002 01:22:17

bon.. encore raté... lisez backslash au lieu de slash avant tous les chiffres où il y a un slash ( / )

\ et là les backslashs sont passés ???

Commentaire de bastoun le 21/04/2002 01:23:55

&lt;cfset newChaine=REReplaceNoCase( form.chaine,  "(#ListChangeDelims(form.critere, '|' )#)",  "&lt;i&gt;&lt;u&gt;\1&lt;/u&gt;&lt;/i&gt;" ,  "ALL" ) &gt;

Là, c mieux... donc c'est double backslashs pour insérer un backslah...

Commentaire de Skyride le 14/07/2002 17:32:46

Merci Bastoun pour ton aide concernant la manipulation des expressions régulières...

A+

SkyRide

Commentaire de carresse le 27/07/2006 19:56:11

merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recherche sur toutes les tables de ma bd [ par alf666666 ] hello, Comment faire une recherche sur toutes les tables de ma BD lorsque l'internaute tape qu'un mot du style, je tape le mot "test" et le site va m moteur de recherche et division des enregistrement [ par mrick6315 ] Bonjour, J'ai cr&#233;&#233; un moteur de recherche pour mon site (1 page index.cfm + 1 page results.cfm).Ca fonctionne bien &#224; part que je ne peu Recherche à acheter licence Coldfusion 5 [ par hka ] Bonjour,Je cherche&nbsp; acheter&nbsp; coldfusion&nbsp; 5&nbsp;&nbsp; Macromedia&nbsp; ne le propose plusdes tuyeaux&nbsp;&nbsp; svpMerci Insertion donnée dans BD MySql et création de la clé primaire [ par alf666666 ] Bonjour, Je d&#233;sire simplement faire une insertion de donn&#233;es dans ma BD MySql. Mais dans ma BD, y a une cl&#233; primaire, donc comment dire Clé étrangère dans une BD [ par alf666666 ] Hello, Une petite question par rapport cette fois ci &#224; ma cl&#233; &#233;trang&#232;re que j'ai dans mes tables, est ce qu'il y a une mani&#232;r Recherche derniere page visitée [ par alf666666 ] Lorsque qu'un client surfe sur mon site (sans se loguer pour l'instant), ensuite il arrive sur une partie de mon site ou il est obligé de se loguer, Recherche Hébergeur CFMX [ par bastoun ] Hello tous, je suis actuellement &#224; la recherche d'un h&#233;bergeur CFMX (7 ce serait bien...) Voil&#224; ce que j'ai trouv&#233; d'int&#233;re moteur de recherches [ par icole ] Icolebonjour je souhaite cr&#233;er un moteur de recherches pour ma base de donn&#233;es access pouvez vous m 'aider merci bon WE Cfsearch Moteur Verity - Afficher l'url des pages contenant le mot recherché [ par Timwaz ] Lut à tous,J'ai utilisé un code présent sur ce site permettant via le moteur verity de faire une recherche sur des pages indexées dans une collection. Afficher 10 résultat de recherche par pages [ par gomezkarim ] Bonjour;Mon site est en Coldfusion et je veux  afficher 10 résultats de recherche par pages, Merci pour votre réponse.


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
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,718 sec (3)

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