|
| Fremhævning af fundne ord ved søgning Fra : Thygesen |
Dato : 10-06-01 15:05 |
|
Jeg har en søgefunktion hvor jeg gerne vil fremhæve de ord i søgeresultatet,
der er de samme det der blev søgt på, jeg har prøvet med nedenstående, men
der er et problem med store og små bogstaver, hvis man f.eks søget på
hjemmeside, så fremhæver den det hvis der står hjemmeside men ikke hvis det
er skrevet med stort altså hvis der står Hjemmeside.
Hvordan kan jeg få det til at virke?
Function Highlight(text)
For Each myItem in Split(strKeyword," ")
Highlight = Replace(text,myItem,"<b>"&myItem&"</b>")
Next
End Function
Mvh. Christoffer Thygesen
e-mail: cht@cht.dk
homepage: http://cht.dk
| |
Jørn Andersen (10-06-2001)
| Kommentar Fra : Jørn Andersen |
Dato : 10-06-01 14:46 |
|
On Sun, 10 Jun 2001 15:04:40 +0100, "Thygesen" <thyge@get2net.dk>
wrote:
>Function Highlight(text)
> For Each myItem in Split(strKeyword," ")
> Highlight = Replace(text,myItem,"<b>"&myItem&"</b>")
> Next
>End Function
Jeg tror det har noget at gøre med binær- vs. text-compare, hvor svjh
binær er default for begge.
Prøv med:
Function Highlight(text)
For Each myItem in Split(strKeyword, " " , -1, 1)
Highlight = Highligt & _
Replace(text, myItem, "<b>"&myItem&"</b>", 1, -1, 1)
Next
End Function
(Ej testet)
Good luck,
Jørn
--
Jørn Andersen
Brønshøj
| |
Thygesen (10-06-2001)
| Kommentar Fra : Thygesen |
Dato : 10-06-01 16:18 |
|
> Jeg tror det har noget at gøre med binær- vs. text-compare, hvor svjh
> binær er default for begge.
>
> Prøv med:
> Function Highlight(text)
> For Each myItem in Split(strKeyword, " " , -1, 1)
> Highlight = Highligt & _
> Replace(text, myItem, "<b>"&myItem&"</b>", 1, -1, 1)
> Next
> End Function
Det virker meget fint lige bort set fra at den erstatter store bogstaver med
små. Hvis man søger på hjemmeside og den finder Hjemmside så skriver den det
med småt. Det er dog bedre end det jeg havde lavet, da den kan lave det om
til fed, selvom det ikke lige matcher med store og små bogstaver.
Mvh. Christoffer Thygesen
e-mail: cht@cht.dk
homepage: http://cht.dk
| |
MacMac (10-06-2001)
| Kommentar Fra : MacMac |
Dato : 10-06-01 15:35 |
|
I brevet "3b237469@news.carlbro.dk" skrev Thygesen (thyge@get2net.dk) den
10/06/01 16:04:
> Jeg har en søgefunktion hvor jeg gerne vil fremhæve de ord i søgeresultatet,
> der er de samme det der blev søgt på, jeg har prøvet med nedenstående, men
> der er et problem med store og små bogstaver, hvis man f.eks søget på
> hjemmeside, så fremhæver den det hvis der står hjemmeside men ikke hvis det
> er skrevet med stort altså hvis der står Hjemmeside.
>
> Hvordan kan jeg få det til at virke?
>
> Function Highlight(text)
> For Each myItem in Split(strKeyword," ")
> Highlight = Replace(text,myItem,"<b>"&myItem&"</b>")
> Next
> End Function
<%
' MarkerOrd 1.0, 12/1/2001
' G¯r et ord i en sÊtning fx. fedt. Bibeholder STORE og sm bogstaver.
' Eksempel: Tekst = "Ordet ord skal i denne sÊtning g¯res fedt."
' Tekst = MarkerOrd(Tekst, "ord", "<B>", "</B>")
Dim MO_RegExp
Dim MO_Streng, MO_Ord, MO_Tag1, MO_Tag2
Function MarkerOrd(MO_Streng, MO_Ord, MO_Tag1, MO_Tag2)
Set MO_RegExp = New RegExp
MO_RegExp.Pattern = "([\?\*\+\.\|\{\}\\\[\]\(\)])"
MO_RegExp.IgnoreCase = True
MO_RegExp.Global = True
MO_Ord = MO_RegExp.Replace(MO_Ord, "\\$1")
MO_RegExp.Pattern = "(" & MO_Ord & ")"
MarkerOrd = MO_RegExp.Replace(MO_Streng, MO_Tag1 & "$1" & MO_Tag2)
Set MO_RegExp = Nothing
End Function
%>
| |
Thygesen (10-06-2001)
| Kommentar Fra : Thygesen |
Dato : 10-06-01 16:24 |
|
"MacMac" <nospam@nospam.com> skrev i en meddelelse
news:B7495246.5E1D%nospam@nospam.com...
>
> <kode>
>
Helt fint, der er bare et problem, hvis man søger på flere ord. F.eks. hvis
man søger på "support asp", så finder den en hel del men den laver det kun
til fed de steder hvor ordene står lige efter hinanden, altså hvis ordene
står to forskellige steder i teksten eller hvis der bare står asp suppport,
så bliver det ikke lavet til fed.
Mvh. Christoffer Thygesen
e-mail: cht@cht.dk
homepage: http://cht.dk
| |
MacMac (10-06-2001)
| Kommentar Fra : MacMac |
Dato : 10-06-01 20:00 |
|
I brevet "3b23a340@news.carlbro.dk" skrev Thygesen (thyge@get2net.dk) den
10/06/01 17:24:
> Helt fint, der er bare et problem, hvis man søger på flere ord. F.eks. hvis
> man søger på "support asp", så finder den en hel del men den laver det kun
> til fed de steder hvor ordene står lige efter hinanden, altså hvis ordene
> står to forskellige steder i teksten eller hvis der bare står asp suppport,
> så bliver det ikke lavet til fed.
Lav funktionen om til at splitte inputtet op ved mellemrum, kør replace
funktionen for hver at de ord der herved fremkommer (tak for kritikken i
øvrigt, det havde jeg helt selv glemt
- Morten
| |
Thygesen (10-06-2001)
| Kommentar Fra : Thygesen |
Dato : 10-06-01 22:14 |
|
"MacMac" <nospam@nospam.com> skrev i en meddelelse
news:B7499053.5EC5%nospam@nospam.com...
> I brevet "3b23a340@news.carlbro.dk" skrev Thygesen (thyge@get2net.dk) den
> 10/06/01 17:24:
>
> > Helt fint, der er bare et problem, hvis man søger på flere ord. F.eks.
hvis
> > man søger på "support asp", så finder den en hel del men den laver det
kun
> > til fed de steder hvor ordene står lige efter hinanden, altså hvis
ordene
> > står to forskellige steder i teksten eller hvis der bare står asp
suppport,
> > så bliver det ikke lavet til fed.
>
> Lav funktionen om til at splitte inputtet op ved mellemrum, kør replace
> funktionen for hver at de ord der herved fremkommer (tak for kritikken i
> øvrigt, det havde jeg helt selv glemt
Så har jeg fået lavet det, så det virker helt som det skal og i øvrigt mange
tak for scriptet
Dim MO_RegExp
Dim MO_Streng, MO_Ord, MO_Tag1, MO_Tag2
Function MarkerOrd(MO_Streng, MO_Ord, MO_Tag1, MO_Tag2)
Set MO_RegExp = New RegExp
MO_RegExp.Pattern = "([\?\*\+\.\|\{\}\\\[\]\(\)])"
MO_RegExp.IgnoreCase = True
MO_RegExp.Global = True
MO_Ord = MO_RegExp.Replace((MO_Ord), "\\$1")
MO_RegExp.Pattern = "(" & (MO_Ord) & ")"
MarkerOrd = MO_RegExp.Replace(MO_Streng, MO_Tag1 & "$1" & MO_Tag2)
Set MO_RegExp = Nothing
End Function
Function Highlight(text)
Showtext = text
For Each myItem in Split(strKeyword," ")
Showtext = MarkerOrd(Showtext&" ", myitem, "<B>", "</B>")
Next
Highlight = Showtext
End Function
Mvh. Christoffer Thygesen
e-mail: cht@cht.dk
homepage: http://cht.dk
| |
Lauritz Jensen (11-06-2001)
| Kommentar Fra : Lauritz Jensen |
Dato : 11-06-01 02:49 |
|
Thygesen wrote:
>
> Helt fint, der er bare et problem, hvis man søger på flere ord. F.eks. hvis
> man søger på "support asp", så finder den en hel del men den laver det kun
> til fed de steder hvor ordene står lige efter hinanden, altså hvis ordene
> står to forskellige steder i teksten eller hvis der bare står asp suppport,
> så bliver det ikke lavet til fed.
Function Hilight(s, p)
Dim RegEx, SenEx, Matches, Match, SenMatches, SenMatch
Dim SentencePattern, WordPattern
Set RegEx = New RegExp
RegEx.IgnoreCase = True
RegEx.Global = True
RegEx.Pattern = "(?:([""'])(.+?)\1|(\w+))"
Set SenEx = New RegExp
SenEx.IgnoreCase = True
SenEx.Global = True
SenEx.Pattern = "(\w+)"
Set Matches = RegEx.Execute(p)
For Each Match In Matches
If Not IsEmpty(Match.SubMatches(1)) Then
Set SenMatches = SenEx.Execute(Match.SubMatches(1))
SentencePattern = SentencePattern & "|"
For Each SenMatch In SenMatches
SentencePattern = SentencePattern & "\b" & _
SenMatch.SubMatches(0) & "\b\W*"
Next
SentencePattern = Mid(SentencePattern, 1, _
Len(SentencePattern) - 3)
ElseIf Not IsEmpty(Match.SubMatches(2)) Then
WordPattern = WordPattern & "|" & Match.SubMatches(2)
End If
Next
WordPattern = Mid(WordPattern, 2)
SentencePattern = Mid(SentencePattern, 2)
RegEx.Pattern = "(?:(\w*)(" & WordPattern &")(\w*)|(" & _
SentencePattern & "))"
Hilight = RegEx.Replace(s, _
"<font color=""#990000"">$1<b>$2$4</b>$3</font>")
Set SenEx = Nothing
Set RegEx = Nothing
End Function
--
Lauritz
| |
|
|