hiliting all instances of a string in a field

Frank Leahy frank at backtalk.com
Wed Mar 3 16:48:11 EST 2004


On Wednesday, March 3, 2004, at 06:05  PM,  
use-revolution-request at lists.runrev.com wrote:

>>> Has anyone written a function that will find all instances of a
>>> string in the htmlText of a field EXCEPT if it appears in a tag such
>>> as <a></a>?  I need to hilite all instances of the string in the
>>> field.  I figure I'm either missing a really obvious function already
>>> in Rev that will do it or I need a fancy regular expression.
>>

Trevor,

Is this the kind of thing you want to do?

http://news.lycos.com/news/ 
story.asp?section=Elections&storyId=829253&topic=bush

That was pretty easy to do:

1. Remove all < > and / from the topic string (the topic string is the  
string you're wanting to hilite)

2. split the html you're wanting to hilite using the topic string.   
Unfortunately you can't use Transcript's "split" command because it  
only splits on a character, but you can use offset to simulate a string  
split.

3. as you step through each found topic string, look for the next ">"  
and next "<" characters.  Call the offset of the "<" character  
nextOpen, and the offset of the ">" character nextClose.

4. Check whether to hilite or not:

If nextClose < nextOpen then
    ' we're in the middle of a tag, so don't hilite it
else
    'we're not in a tag, so hilite the topic string
    'do this by replacing the topic string you've found with this
    '      "<span class=" & quote & hiliterCssName & quote & ">" &  
topicStr & "</span>"
end if

5. You can find the css value for hiliterCssName by looking in the css  
file for the above referenced page.

Best,
-- Frank




More information about the use-livecode mailing list