/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408878
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste