Det är så att jag håller på med en sökfunktion för mina text-filer på webeye.nu, som den är nu så funkar den så långt att den söker igenom filerna efter det ord man angivit och formaterar det till en annan font. DET funkar bra. MEN när sökningen utförs så vill jag inte att den skall söka i texten mellan < och >, då detta kan ställa till problem i länkar et.c... utan jag vill bara söka utanför html-taggar... Har jag förklarat mig luddigt? Ett exempel:
sokstr = request.Form("sokstr")
http = "http://www.webeye.nu/default.asp?que=asp/artiklar"
lokal = Server.Mappath("asp\artiklar\")
Set fso = CreateObject("scripting.FileSystemObject")
Set fsof = fso.GetFolder(lokal)
Set fsofi = fsof.files
'***** Skapar ett Regular Expression *****'
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
chk = 0
For each fil in fsofi
'***** Öppnar filen och lägger allt innehåll i variabelnn filecont *****'
Set filen = fso.OpenTextFile(lokal & "\" & fil.name)
filecont = filen.ReadAll
'Response.write "Fil: " & fil.name & "<br>"
regEx.Pattern = sokstr
Set Matches = regEx.Execute(filecont)
For each match1 in Matches
chk = chk + 1
exit For
Next
If chk > 0 then
Response.write "<a href='default.asp?que=sok/default.asp&sokstr2=" & sokstr & "&fil=" & fil.name & "'>" & fil.name & "</a><br>"
End If
Next
If chk = 0 then Response.write "Det fanns ingen träff på ordet <b>" & sokstr & "</b>"
Provade med en hel del olika sökord och kom vidare med korrekta länkar, ej så som du beskrev här ovan.
[redigerat]
En liten bugg .... hittar den endast en fil med sökordet i så skriver den ut länk till filen och under skriver den att det inte fanns några träffar på sökordet, fast att det fanns en.
[/redigerat]
cya,
PatrikB
Länkarna till filerna funkar finfint... det är inte som är problemet... utan det är dom länkarna i filen länken leder till som är problemet... Länkarna i den filen blir fel...
Att endast hitta dessa ord är knepigt, särskilt som RegExp i VBScript är lite haövdant. Det du kan göra är att rensa ut alla taggat ur texten, innan du söker efter matchningarna.
hmm... nu har jag kommit så långt att alla formaterade ord så som <a> och andra taggar inte blir påverkade, så att länkarna blir rätt... men länkens titel blir inte formaterad, och det är nu det jag vill komma åt...
Nuvarande kod för visning av filen:
lokal = Server.Mappath("asp\artiklar\")
Set fso = CreateObject("scripting.FileSystemObject")
Set fsof = fso.GetFolder(lokal)
Set fsofi = fsof.files
Set filen = fso.OpenTextFile(lokal & "\" & Request.Querystring("fil"))
filecont = filen.ReadAll
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
strSida = Replace(filecont,Request.Querystring("sokstr2"),"<font color=330000 size=2 class=sokstr>" & Request.Querystring("sokstr2") & "</font>",1,-1,1)
regex.Pattern = "<[^>]*<font color=330000 size=2 class=sokstr>" & Request.Querystring("sokstr2") & "</font>.*>"
Set matches = regex.execute(strSida)
For each match in matches
strReplace = replace(match,"<font color=330000 size=2 class=sokstr>","")
strReplace = replace(strReplace,"</font>","")
'Response.write "Match: " & match & "<br>strReplace: " & strReplace & "<br>"
regex.pattern = match
'Response.write strReplace
strSida = regex.replace(strSida, strReplace)
Next
Response.write strSida