Det er ikke et prob jeg har oplevet (fordi mine bruger kun kan indsætte et link), men jeg søgte lidt på nette og fandt denne funktion. Den virker, og har mange instillingsmuligheder.
Function autoHighlight(Lin)
dim link_color, link_target, ugyldigeTegn, StartTegn, SlutTegn, MaxDomain, MaxLinks, Pointer, RegON
dim RegDomain, NoLink, TrueLink, Linkhtml, PathStart, PortStart, PointerADD, t, middle, temp, start, i, slut, tegn, tegnF, TegnE
dim ServerSlut, Domain, servername, RegDomains
' Indstillinger -----
link_color = "#3366ff" ' 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>"
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>"
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