Hvorfor virker denne link-funktion kunne inden skr til db?
Hej!Jeg bruger ASP - MySQL (På B-one)
Jeg har før brugt følgende funktion:
**************************************************
'Lin = Tekst
Function autoHighlight(Lin)
'Function autoHighlight(Tekst)
' Indstillinger -----
link_color = "black" ' Hvad farve skal linket have
link_target = "_blank" ' Link Target
ugyldigeTegn = " _:\,;/'?" ' Ugyldige tegn omkring punktummer
StartTegn = " ,;""<>!" ' Tegn der starter et link fx. <H1>www.spise.dk</H1>
SlutTegn = " ,;""<>!" ' Tegn der slutter et link fx. www.partynet.dk!
MaxDomain = 3 ' Max. tegn i domain navn fx "com" (3=default)
MaxLinks = -1 ' (Bruges til debug) Hvor mange links skal "HighLight"'es per streng (-1 = uendelig)
Pointer = 1 ' Ved hvad tegn skal der startes (1=default)
' Skal der chekes efter registrede domæner (1=ja & 0=nej)
RegON = 1
' De registrede domæner:
RegDomain = "dk;com;net;org;gov;edu;uk;no;se;de;as;ru;sk;ch;it;nl;fr;hu;to;au;tw;jp;"
' Indstillinger slut -----
' Begynd løkke
Do until t = MaxLinks
' Nulstilling af de variable:
NoLink = False 'True hvis det fundne tekst ikke er et link
TrueLink = False 'True hvis linket begynder med http://
Linkhtml = ""
PathStart = 0
PortStart = 0
PointerADD = 0
' Her findes "midten" af linket
middle = Instr(pointer,lin,".")
temp = Instr(pointer,Lcase(lin),"http://")
' Dette sørger for at finde det første af enten "." eller "http://"
If temp < middle and temp <> 0 then middle = temp+6:TrueLink = true
If middle = 0 and temp > 0 then middle = temp+6:TrueLink = true
' Hvis "." eller "http://" ikke er fundet skal løkken stoppe
If Middle = 0 then exit do
' Her findes starten af linket (defineret udfra start tegnene)
start = 1
For i = 1 to len(StartTegn)
temp = InStrRev(Lcase(lin),mid(StartTegn,i,1),Middle)
If temp => start and temp <> 0 then start = temp+1
next
' Her findes slutningen af linket (defineret udfra slut tegnene)
slut = len(lin)
For i = 1 to len(SlutTegn)
temp = Instr(Middle,Lcase(lin),mid(SlutTegn,i,1))
If temp <= slut and temp <> 0 then slut = temp-1
next
'Checker efter "?" og "." de må gerne stå i midten af linket, men ikke i slutningen
' Fx. "www.nordmark.dk?????" eller "www.partynet.dk..."
tegn = Mid(lin,slut,1)
do until (tegn <> "." and tegn <> "?") or slut = 1
If tegn = "." or tegn = "?" then slut=slut-1:PointerADD = PointerADD+1
tegn = Mid(lin,slut,1)
loop
'Hvis det kun er et "." der er fundet og linket ikke begynder med http:// skal det testes ekstra
If TrueLink = False then
' Her testes om punktummet står i starten eller i slutningen af strengen
If Middle = 1 then noLink = true:start=slut+1
If Middle = len(lin) then noLink = true:start=slut+1
' Her testes efter ugyldige tegn, ved siden af punktummet
If nolink <> True then
TegnF = Mid(lin,middle-1,1)
TegnE = Mid(lin,middle+1,1)
For i = 1 to len(ugyldigeTegn)
If TegnF = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
If TegnE = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
next
end if
' Her findes domæne navnet og længden chekes -> fx:".dk" ".com" ".uk"
' De første if-sætningr checker om der er andet efter efter server navnet
' som fx. port nr. eller en sti
If nolink <> True then
ServerSlut = Slut
temp = Instr(Middle,Lcase(lin),"/")
If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PathStart=Temp
temp = Instr(Middle,Lcase(lin),":")
If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PortStart=Temp+1
temp = InstrRev(lin,".",ServerSlut)
Domain = mid(Lcase(lin),temp+1,ServerSlut - temp)
Servername = mid(lin,start,ServerSlut-start+1)
If len(domain) > MaxDomain then noLink = true:start=slut+1 'Max tegn
If len(domain) = 0 then noLink = true:start=slut+1 'Udrydder fx. www.spise./index.htm
'Checker efter steder i servernavnet hvor der er mere end et punktum
If Instr(Servername,"..") <> 0 then noLink = true:start=slut+1
end if
' Her chekes, hvis RegON = 1, om domænenavnet er korrekt.
If RegON = 1 and nolink <> true then
RegDomains = split(Lcase(RegDomain),";")
nolink = true
For i = 0 to Ubound(RegDomains)
If RegDomains(i) = Domain then nolink = false:exit for
next
If nolink = true then start=slut+1
end if
else
'Hvis der står "xxhttp://", er det kun fra "http://" der skal highlightes:)
start = Instr(pointer,Lcase(lin),"http://")
End if
'Dette er nogen af de ting der er mulige at spytte ud til hvert link:
'Response.write "---------------------<BR>"
'Response.write "LinkNr: "&t&"<BR>"
'Response.write "Starter ved tegn: "&Start&"<BR>"
'Response.write "Slutter ved tegn: "&Slut&"<BR>"
'Response.write "Domænenavn: "&Domain&"<BR>"
'Response.write "Servernavn uden path: "&ServerName&"<BR>"
'If PathStart<>0 then Response.write "Path efter servernavn: "&mid(lin,pathStart,slut-pathstart+1)&"<BR>"
'Hvis det fundne mulige link har bestået alle "prøverne" skal det udskiftes med html tags
If noLink <> True then
If Lcase(Mid(lin,start,7)) = "http://" then
'LinkHtml = "<a href='" & mid(lin,start,slut-start+1) &"' target='"&link_target&"'><font color='" & link_color & "'>"& mid(lin,start,slut-start+1) & "</font></a>"
LinkHtml = "<a href=" & mid(lin,start,slut-start+1) &" target="&link_target&"><font color=" & link_color & ">"& mid(lin,start,slut-start+1) & "</font></a>"
else
'LinkHtml = "<a href='http://" & mid(lin,start,slut-start+1) &"' target='"&link_target&"'><font color='" & link_color & "'>"& mid(lin,start,slut-start+1) & "</font></a>"
LinkHtml = "<a href=http://" & mid(lin,start,slut-start+1) &" target="&link_target&"><font color=" & link_color & ">"& mid(lin,start,slut-start+1) & "</font></a>"
End If
lin = Left(lin,start-1) & LinkHtml & right(lin,len(lin)-slut)
t=t+1
End If
'Pointeren sættes til næste logiske start
pointer = start + len(LinkHtml)+PointerADD
loop
autoHighlight = lin
End function
Tekst = autoHighlight(Tekst)
***********************************************************
Til at lave links med... For lang tid siden lavede jeg "fejlen" at ændre tekst til links og så smide i databasen... Det holder jo ikke.
Nu er jeg ved at ændre strukturen og vil gøre det efter udtrækket... Meeen så laver den følgende fejl:
Microsoft VBScript compilation error '800a03ea'
Syntax error
forum.asp, line 373
Function autoHighlight(Lin)
Mystisk - nogle der kan hjælpe?
