begin process at 2012 02 11 20:45:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de Caractères

 > METTRE EN GRAS UN OU PLUSIEURS MOTS RECHERCHÉS DANS UN TEXTE

METTRE EN GRAS UN OU PLUSIEURS MOTS RECHERCHÉS DANS UN TEXTE


 Information sur la source

Note :
Aucune note
Catégorie :Chaîne de Caractères Classé sous :gras, bold, texte, mot Niveau :Expert Date de création :17/04/2003 Date de mise à jour :17/04/2003 16:16:31 Vu :18 514

Auteur : lemulot

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

 Description

J'ai voulu faire un moteur de recherche en exploitatant le technologie Verity qui vient avec Cold Fusion MX. Tout marche, seulement j'ai voulu que tous les mots qui causent ma recherche soient en gras dans les textes retournés (c comme dans google, on tape un mot et ensuite on voit notre mot en gras dans le texte correspondant aux résultats).

Faites un copier/coler du code si dessous

Source

  • <cfscript>
  • /***************************************************************************************\
  • * Auteur: Frédéric Gauthier-Boutin *
  • * Date: 10 avril 2003 *
  • * Description: *
  • * Fonction servant à mettre en évidence les mots recherchés dans un texte *
  • * *
  • * Arguments : *
  • * SearchFor => Mot(s) recherché(s) dans le texte *
  • * From => Texte dans lequel nous recherchons *
  • * le ou les mots contenus dans SearchFor *
  • * *
  • * Arguments Optionnels : *
  • * StartTag => Début du tag qui sera inséré devant *
  • * chaque mot recherchés (par défaut, met en gras) *
  • * EndTag => Fin du tag inséré devant le mot recherchés par StartTag *
  • * Exclude => Contient une liste de mots à exclure *
  • * (séparer les mots par des espaces) *
  • * Version: #2.0 *
  • \***************************************************************************************/
  • function MuLoT_BoldingSearch(SearchFor, From){
  • /* Définition et initialisation de mes variables et des arguments optionels
  • REM: Déclaration obligatoire de toutes les variables au début de la fonction.
  • Sans cela, une erreur de type << No top level page was found >> est déclanchée.
  • */
  • var iCtr = 2; //Curseur déterminant le début du mot
  • var iFin = 1; //Curseur déterminant la fin du mot
  • var strTotal = From; //Contiendra le texte final avec les nouvelles balises
  • var strMot = ""; //Contiendra le mot venant d'être isolé
  • var iLongueurMot = 0; //Contiendra la longueur du mot isolé
  • var iLongueur = 0; //Contiendra le nombre de caractères dans la chaîne de mots recherchés
  • var StartTag = "<b>"; //Met en gras le mot recherché
  • var EndTag = "</b>"; //Ferme le tag du début
  • var Exclude = " ou et ";//Nous excluons certains mots clés pour Verity
  • //Vérification si nous avons reçu des arguments supplémentaires
  • if(ArrayLen(arguments) GTE 5)
  • Exclude = Exclude & arguments[5];
  • if(ArrayLen(arguments) GTE 4)
  • EndTag = arguments[4];
  • if(ArrayLen(arguments) GTE 3)
  • StartTag = arguments[3];
  • //Enlève les espaces avant et après le ou les mots
  • SearchFor = " " & trim(SearchFor);
  • /*
  • J'ai ajouter un espace devant afin de faciliter l'entrée de la chaîne de caractères
  • dans ma boucle. Autrement, il m'aurait fallu des conditions spéciales pour le tout
  • 1er caractère. C'est aussi pour cette raison, que iCtr débute à 2 et non à 1.
  • * Vous n'avez qu'à étudier la structure du 1er if pour comprendre. *
  • */
  • //Vérification s'il y a des mots à rechercher
  • if (SearchFor NEQ " ") {
  • //Détermine le nombre de caractères à parcourir (+1 pour terminer le dernier mot)
  • iLongueur = len(SearchFor) + 1;
  • //Boucle parcourrant tous les caractères de la chaîne de mots recherchés
  • while ( iCtr LT iLongueur )
  • /*
  • Ici, il y aurait 2 vérifications à faire pour détecter le début
  • d'un mot sans l'ajout d'un espace devant SearchFor (comme expliqué plus haut) :
  • 1) La première lettre de la chaîne correspond certainement au début
  • d'un mot, car on a enlèvé les espaces avant et après et
  • et on a vérifié que la chaîne n'était pas vide.
  • 2) Quand je tombe sur un espace et que le prochain caractère est une lettre,
  • c'est le début d'un mot à coup sûr.
  • Dans notre cas, ayant ajouté un espace, nous ne devons vérifier que l'étape #2.
  • */
  • if ( Mid(SearchFor, iCtr, 1) NEQ " " AND Mid(SearchFor, iCtr - 1, 1) EQ " " ) {
  • //Recherche d'un espace pour trouver la fin du mot
  • //+1 car iCtr est déjà sur un caractère
  • iFin = Find(" ", SearchFor, iCtr + 1);
  • //Vérification si s'était le dernier mot de la liste de mots
  • if ( iFin EQ 0 )
  • iFin = iLongueur;
  • //Obtention de la longueur du mot
  • iLongueurMot = iFin - iCtr;
  • //Extraction du mot
  • strMot = Mid (SearchFor, iCtr, iFin - iCtr);
  • //Vérification si c'est un mot à exclure
  • if ( FindNoCase(strMot, Exclude) EQ 0 )
  • //Met les nouvelles balises entre le mot
  • strTotal = ReplaceNoCase(strTotal, strMot, StartTag & strMot & EndTag, "ALL");
  • /*
  • Incrémentation du compteur jusqu'à la fin de la longueur du mot
  • afin de passer au suivant et continuer la recherche.
  • +1 car nous devons continuer la recherche après le mot
  • */
  • iCtr = iCtr + iLongueurMot + 1;
  • } else
  • //Incrémentation du compteur, afin de passer au caractère suivant
  • iCtr = iCtr + 1;
  • /*** FIN DE LA BOUCLE ***/
  • //Retourne le texte contenant toutes les nouvelles balises
  • return strTotal;
  • } else
  • //Aucuns mots à rechercher
  • return SearchFor;
  • }</cfscript>
<cfscript>
		/***************************************************************************************\
		*	Auteur:	Frédéric Gauthier-Boutin													*
		*	Date:	10 avril 2003																*
		*	Description:																		*
		*		Fonction servant à mettre en évidence les mots recherchés dans un texte			*
		*																						*
 		*		Arguments :																		*
		*			SearchFor	=>	Mot(s) recherché(s) dans le texte							*
		*			From		=>	Texte dans lequel nous recherchons							*
		*							le ou les mots contenus dans SearchFor						*
		*																						*
		*		Arguments Optionnels :															*
		*			StartTag	=>	Début du tag qui sera inséré devant							*
		*							chaque mot recherchés (par défaut, met en gras)				*
		*			EndTag		=>	Fin du tag inséré devant le mot recherchés par StartTag		*	
		*			Exclude		=>	Contient une liste de mots à exclure						*	
		*							(séparer les mots par des espaces)							*
		*	Version: #2.0																		*
		\***************************************************************************************/
		function MuLoT_BoldingSearch(SearchFor, From){ 

			/*	Définition et initialisation de mes variables et des arguments optionels
				REM:	Déclaration obligatoire de toutes les variables au début de la fonction.
						Sans cela, une erreur de type << No top level page was found >> est déclanchée.
			*/
			var iCtr = 2; 			//Curseur déterminant le début du mot
			var iFin = 1; 			//Curseur déterminant la fin du mot
			var strTotal = From; 	//Contiendra le texte final avec les nouvelles balises
			var strMot = ""; 		//Contiendra le mot venant d'être isolé
			var iLongueurMot = 0;	//Contiendra la longueur du mot isolé
			var iLongueur = 0;		//Contiendra le nombre de caractères dans la chaîne de mots recherchés
			var StartTag = "<b>";	//Met en gras le mot recherché
			var EndTag = "</b>"; 	//Ferme le tag du début
			var Exclude = " ou et ";//Nous excluons certains mots clés pour Verity

			//Vérification si nous avons reçu des arguments supplémentaires
				
			if(ArrayLen(arguments) GTE 5)
				Exclude = Exclude & arguments[5];
			
			if(ArrayLen(arguments) GTE 4)
				EndTag = arguments[4];

			if(ArrayLen(arguments) GTE 3) 
				StartTag = arguments[3];
				
			//Enlève les espaces avant et après le ou les mots
			SearchFor = " " & trim(SearchFor);
						
			/*
				J'ai ajouter un espace devant afin de faciliter l'entrée de la chaîne de caractères
			   	dans ma boucle. Autrement, il m'aurait fallu des conditions spéciales pour le tout
			   	1er caractère. C'est aussi pour cette raison, que iCtr débute à 2 et non à 1.
			   
			   	* Vous n'avez qu'à étudier la structure du 1er if pour comprendre. *
			*/

			//Vérification s'il y a des mots à rechercher
			if (SearchFor NEQ " ") {
				
				//Détermine le nombre de caractères à parcourir (+1 pour terminer le dernier mot)
				iLongueur = len(SearchFor) + 1;
				
				//Boucle parcourrant tous les caractères de la chaîne de mots recherchés
				while ( iCtr LT iLongueur )
				
					/*
						Ici, il y aurait 2 vérifications à faire pour détecter le début
						d'un mot sans l'ajout d'un espace devant SearchFor (comme expliqué plus haut) :
							1)	La première lettre de la chaîne correspond certainement au début
								d'un mot, car on a enlèvé les espaces avant et après et
								et on a vérifié que la chaîne n'était pas vide.	
							2)	Quand je tombe sur un espace et que le prochain caractère est une lettre,
								c'est le début d'un mot à coup sûr.
						
						Dans notre cas, ayant ajouté un espace, nous ne devons vérifier que l'étape #2.
					*/
					if ( Mid(SearchFor, iCtr, 1) NEQ " " AND Mid(SearchFor, iCtr - 1, 1) EQ " " ) {
																			
						//Recherche d'un espace pour trouver la fin du mot
						//+1 car iCtr est déjà sur un caractère
						iFin = Find(" ", SearchFor, iCtr + 1);
						
						//Vérification si s'était le dernier mot de la liste de mots
						if ( iFin EQ 0 )
							iFin = iLongueur;
						
						//Obtention de la longueur du mot
						iLongueurMot = iFin - iCtr;
						
						//Extraction du mot
						strMot = Mid (SearchFor, iCtr, iFin - iCtr);
						
						//Vérification si c'est un mot à exclure
						if ( FindNoCase(strMot, Exclude) EQ 0 ) 
							//Met les nouvelles balises entre le mot
						    strTotal = ReplaceNoCase(strTotal, strMot, StartTag & strMot & EndTag, "ALL");
								
						/*
							Incrémentation du compteur jusqu'à la fin de la longueur du mot
							afin de passer au suivant et continuer la recherche.
							
							+1 car nous devons continuer la recherche après le mot
						*/
						iCtr = iCtr + iLongueurMot + 1;
						
					} else
						//Incrémentation du compteur, afin de passer au caractère suivant
						iCtr = iCtr + 1;
		
				/*** FIN DE LA BOUCLE ***/
				
				//Retourne le texte contenant toutes les nouvelles balises
			    return strTotal;
			} else
			
				//Aucuns mots à rechercher
				return SearchFor;
		}</cfscript>

 Conclusion

Ainsi, pour appeler la fonction, cela ce fait ainsi:
#MuLoT_BoldingSearch("quoi on cherche", "dans quel texte")#

Il ne faut pas non plus oublier les paramètre optionnels. Si je veux, par exemple, que le mot recherche soi en rouge et non en gras j'appel ma fonction comme ceci:

#MuLoT_BoldingSearch("quoi on cherche", "dans quel texte", "&lt;font color=red&gt;", "&lt;/font&gt;")#

Si en plus, je veux exclure certains mots (comme "par", "donc", "or") et bien j'appel ma fonction comme ceci:


#MuLoT_BoldingSearch("quoi on cherche", "dans quel texte", "&lt;b&gt;", "&lt;/b&gt;", " par donc or ")#


 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
GENERER UN MOT DE PASSE ALÉATOIRE par jeanwebh
MANIPULATION DES TABLEAUX par Skyride
MANIPULATION DES STRUCTURES par Skyride

 Sources en rapport avec celle ci

Source avec Zip MOTEUR DE RECHERCHE VERITY SUR DES FICHIERS TEXTE... par mojojo
FORMATAGE DE TEXTE (PRISE EN COMPTE DES RETOURS À LA LIGNE) par fw
REQUÊTE DE RECHERCHE AVEC ACCENTUATION DES MOTS par jeanwebh
GENERER UN MOT DE PASSE ALÉATOIRE par jeanwebh
Source avec Zip PETIT MOTEUR DE RECHERCHE PAR MOT(S) CLÉ(S) par Skyride

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

CFFILE et base de données [ par Ernst ] Bonjour,Je cherche à faire la chose suivante:1) inserer un enregistrement dans une base de données, avec des éléments provenant d'un formulaire. (de t Retour à la ligne. [ par Domi ] Je voudrai récupérer depuis un formulaire le texte d'un Textarea, jusqu'a la pas de probléme, mais je voudrai également récupérer les retour à la lign formater du texte dans un tableau [ par melany ] Lorsque je veux afficher un texte tappé au kilomètre sans espace entre les mots, dans un tableau auquel j'ai donné une taille fixe, je n'obtiens pas l Comment afficher x caractères sans couper le dernier mot ? [ par Roberto ] Comment afficher x caractères sans couper le dernier mot ?Quelqu'un a une idée ? #left(text,80)#Que dois-je ajouter pour y arriver ? Merci d'avance. Encrypt et Decrypt [ par perlimpinpin ] Je ne comprends pas pourquoi la fonction Encrypt(string, key) ne crypte pas toujours de la même façon ! Ce que je cherche a faire :- Saisir un mot de annotation de document xml ou html [ par bringay ] Bonjour à tous,Je cherche a annoter des documents html.Quand l'utilisateur selectionne un texte, clique sur un bouton (annoter), j'arrive (en javaScri Recuperer une image d'un form pour l'inserer dans un une zone de texte [ par tdm ] Bonjour à tous,Voila mon probleme.Je souhaite inserer une image dans un formulaire de réponse forum.il faut que je puisse récuperer le lien dans ma ta Sendkeys [ par BachM ] Savez-vous quel est la syntaxe de l'envoi touches fonction simulant le verrouillage du clavier numérique. SenKeys ???BachMVotre texte ICIVotre texte I Requete dynamique [ par FREESLY ] Bonjour les gens, je suis entrain de faire un script me permettant de cr&#233;er des requetes dynamiques, mais je dois avouer que pour l'instant c pas 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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

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