#1 (permalink)  
Old 03-07-2006, 12:39 PM
Registered User
 
Join Date: Jul 2004
Posts: 249
ASP: highlight a section of words only

This code highlights words entirely. I look for the word nation it highlights words like abomination. So I only want the function to highlight whatever I'm looking for.
Code:
dim strKeywords, strText, strFore, strAft, bolInComplete
dim Text1, Text2, Text3, Text4, Text5, Text6
dim keywordarray, counter

Text1=Request("Keyword")
Text2=Request("Keywordb")
Text3=Request("Keywordc")
Text4=Request("Keywordd")
Text5=Request("Keyworde")
Text6=Request("Keywordf")

strAft="</b></font>"
bolInComplete=true
Do until RS.eof
strText =rs("text_data")

IF Text1<>"" THEN
strFore="<font color=red><b>"
strText=HighlightKeywords(strText,Text1, strFore, strAft,bolInComplete)
End If
IF Text2<>"" THEN
strFore="<font color=blue><b>"
strText=HighlightKeywords(strText,Text2, strFore, strAft,bolInComplete)
End If
IF Text3<>"" THEN
strFore="<font color=green><b>"
strText=HighlightKeywords(strText,Text3, strFore, strAft,bolInComplete)
End If
IF Text4<>"" THEN
strFore="<font color=orange><b>"
strText=HighlightKeywords(strText,Text4, strFore, strAft,bolInComplete)
End If
IF Text5<>"" THEN
strFore="<font color=purple><b>"
strText=HighlightKeywords(strText,Text5, strFore, strAft,bolInComplete)
End If
IF Text6<>"" THEN
strFore="<font color=aqua><b>"
strText=HighlightKeywords(strText,Text6, strFore, strAft,bolInComplete)
End If

Response.Write "<sup>" & rs("verse") & "</sup>" & strText & "</br>"

rs.movenext

Loop
else
response.write "No verses found"
End If

Function HighlightKeywords(byVal strText, byRef strKeywords, byRef strFore, byRef strAft, byVal bolInComplete)

' Dim the variables.
dim arrKeywords
dim strPattern, strReplace
dim i
dim arrstrFore
' Split the list of keywords into an array for easy iteration.
arrKeywords = Split(strKeywords,"/")
'arrstrFore=Split(strFore,",")

' Loop through the array of keywords and build the strings needed for the highlighting.
For i=0 to UBound(arrKeywords,1)
' Build the pattern string. Basically what we are saying is:
' Find all instances of this word that are distinct words not in pointed brackets.

' If we are not to find incomplete words then use the rigid pattern.
If Not bolInComplete Then
strPattern ="(?!<)\b(" & arrKeywords(i) & ")\b(?!>)"
'strPattern = arrKeywords(i)
' Else allow for characters following the keyword before the word break.
Else
strPattern ="(?!<)\b(\w*" & arrKeywords(i) & "\w*)\b(?!>)"
'strPattern =arrKeywords(i)
End If


' Build the replace string. This tells the regexp what to replace the instances found
' with. We use the $1 to say: Use the value that was there. This is good for use when
' you don't want to change the case of the existing word.
strReplace = strFore & "$1" & strAft 
'strReplace = "$1" 

' Call the helper routine.
strText = Highlight(strText,strPattern,strReplace,True)

'response.write arrstrFore(i)
'response.write arrKeywords(i)

Next'i'

' Return the newly formatted string.
HighlightKeywords = strText
End Function

Function Highlight(byVal strText, byRef strPattern, byRef strReplace,byRef bolIgnoreCase)

' Dim the Variables
dim mobjRegExp
dim i

' Initialize the Regular Expressions Object.
Set mobjRegExp = New RegExp

' Set it to find all matches.
mobjRegExp.Global = True

' This parameter tells RegExp if it should be case sensitive or insensitive.
' This is a parameter that should be specified by the calling function.
mobjRegExp.IgnoreCase = bolIgnoreCase

' The pattern to find. This is the most difficult part of using RegExps.
mobjRegExp.Pattern = strPattern

' Call the replace method of the RegExp object. This will do all the work.
strText = mobjRegExp.Replace(strText,strReplace)

' Kill the object.
Set mobjRegExp = Nothing

' Return the newly formatted string.
Highlight = strText
End Function


rs.close
conn.close
Reply With Quote

  #2 (permalink)  
Old 03-08-2006, 09:22 AM
curtiss's Avatar
Moderator
 
Join Date: May 2003
Posts: 1,445
I know absolutely nothing about ASP, but there are two ways this is usually done with coding.

1) There is usually a difference between the way you match strings. For instance, in Perl, if you use ~=, it will look for a partial match (like, it will find "nation" within the word "abomination"). If you use ==, it will look for a full match.

2) You simply insert a space before and after the string you're searching for. If you want to only highlight the word "nation", then you set up your script to search for "&nbsp;nation&nbsp;". That way, it won't find "nation" within the word "abomination", because there is no space before/after the string "nation" within that word.
__________________
I hate Internet Explorer! Anyone with me?
Reply With Quote
  #3 (permalink)  
Old 06-22-2006, 11:56 PM
Registered User
 
Join Date: Jul 2004
Posts: 249
I don't know if I accidentally play around with the script. But now it's showing error:
Quote:
Microsoft VBScript runtime error '800a139a'
Unexpected quantifier
/wheelofgod/showverse.asp, line 210
Line 210 shows:
Code:
strText = mobjRegExp.Replace(strText,strReplace)
Attached Files
File Type: txt showverse.txt (6.7 KB, 104 views)
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
How do I highlight a split function text? gilgalbiblewhee Programming and Scripting 7 01-31-2006 05:12 PM
Emailing a section of a pdf directly from Reader 7? shakim Off-Topic 1 10-19-2005 08:45 PM
I cannot post in Show-off site section??? Why? friends-in-kiev Off-Topic 2 04-24-2005 09:19 AM


All times are GMT -5. The time now is 05:35 PM.

 
Bitrix
Clicky Web Analytics
CloudContacts
Maxtango


Subscribe to our feed | add to myYahoo!

Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.2.0
© 1997-2007 HTMLCenter