Hey folks,
I suck at regex, which is why I helped sponsor that little tool that Mike
found, but I'm still having trouble figuring this out. And, since it was
originally written by Raymond, I thought I'd throw this out here.

There's this UDF, which we already modified once to use a span class instead
of just a simple background color, that highlights a search term. But, if
the search term happens to contain the letters inside the span, like say,
for instance, if someone searchs for "pan", the UDF overwrites the span
text. I'm sure there's a way to write the regex to look for the search term
except when it's in this "<span class="hlt">anythinghere</span>" but I don't
know how to do it. Here's the UDF:
<cfscript>
/**
 * Applies a simple highlight to a word in a string.
 *
 * @param string   The string to format.
 * @param word   The word to highlight.
 * @param front   This is the HTML that will be placed in front of the
highlighted match. It defaults to <span style=
 * @param back   This is the HTML that will be placed at the end of the
highlighted match. Defaults to </span>
 * @param matchCase   If true, the highlight will only match when the case
is the same. Defaults to false.
 * @author Raymond Camden ([EMAIL PROTECTED])
 * @version 1, July 30, 2001
 */
function highLight(str, wordList) {


/**
 * Modification by Kevin Graeme
 * Added a class descriptor called "hlt" to the global css styles,
 * and changed the span style from a direct style to a called class.
 * This resolves a Netscape 4.x CSS implementation problem.
*/
/* var front = "<span style=""background-color: yellow;"">"; */
var front = "<span class=""hlt"">";
var back = "</span>";
var matchCase = false;

//check for empty word list, this is the base condition for the recursion
if(ListLen(wordList) Lt 1)
return str;
else
word = ListFirst(wordList);

if(ArrayLen(arguments) GTE 3) front = arguments[3];
if(ArrayLen(arguments) GTE 4) back = arguments[4];
if(ArrayLen(arguments) GTE 5) matchCase = arguments[5];


if(Not matchCase)
CurTxt = REReplaceNoCase(str,"(#word#)","#front#\1#back#","ALL");
else
CurTxt = REReplace(str,"(#word#)","#front#\1#back#","ALL");

return Highlight(CurTxt, ListRest(wordList), front, back, matchCase);

}

</cfscript>




---------------------------------------------------------
Deanna Schneider
UWEX-Cooperative Extension
Interactive Media Developer

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/lists.cfm?link=t:5
Subscription: http://www.houseoffusion.com/lists.cfm?link=s:5
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.5

Get the mailserver that powers this list at 
http://www.coolfusion.com

Reply via email to