I brevet "3B90B3A4.1D93E12B@serveren.dk" skrev Anders Holbøll
(dev-null-20010827@serveren.dk) den 01/09/01 12:08:
> MacMan wrote:
>> Anders Holbøll skrev:
>>> MacMan wrote:
>>>>
>>>> Jeg har nu snart prøvet at hav af frit tilgængelige funktioner
>>>> der kan lave links i en tekst streng om til HTML links, men de
>>>> er alle samme lige elendige. Er der ikke nogen der kender til
>>>> en der virker ordentlig?
>>
>> Der hvor de fleste fejler er ved linjeskift, altså hvis man har en
>> tekst hvor linket er det allersidste på linjen, så tager de fleste
>> noget af næste linje med.
>
> Kan vi så ikke lave et sammen? Hvis jeg nu lægger ud og "skyder fra
> hoften", med noget fuldstændigt utestet kode (Ikke fordi, jeg har noget
> imod RegExps (Jeg elsker RegExps), men det er ikke alle, der har skiftet
> til win2k eller opgraderet deres vbscript-fortolker):
Jeg har denne som nok er den jeg har haft de bedste resultater med:
(ser lidt kikset ud her, koden kan også ses her:
http://arto.dk/includes/linktekst.txt )
<%
Function autoHighlight(ByVal sInput, ByVal sTarget)
Dim sPunct, sNew, bStop, sVal1, sVal2, sVal3, sVal4
' Define punctuation characters
sPunct = "_-+=!?.,;:`~'""*^$%()[]{}<>|"
' Assign input string to local variable so we don't change the
' original string.
sNew = sInput
' Split the string by whitespace: spaces, carriage returns, line feeds,
' and tabs. Then, for each "word" in the string...
For Each sVal1 in Split(sNew, " ")
For Each sVal2 in Split(sVal1, vbcr)
For Each sVal3 in Split(sVal2, vblf)
For Each sVal4 in Split(sVal3, Chr(9))
' Remove beginning and ending punctuation
bStop = FALSE
Do While (Not bStop)
If (Instr(sPunct, Left(sVal4, 1)) <> 0 And
Len(sVal4) > 2) Then
sVal4 = Mid(sVal4, 2)
Else
bStop = TRUE
End If
Loop
bStop = FALSE
Do While (Not bStop)
If (Instr(sPunct, Right(sVal4, 1)) <> 0 And
Len(sVal4) > 2) Then
sVal4 = Left(sVal4, Len(sVal4) - 1)
Else
bStop = TRUE
End If
Loop
' If the word begins with
http:// then convert all
occurrences
' of this word to a hyperlink.
If (LCase(Left(sVal4, 7) = "
http://") Or
LCase(Left(sVal4, 4) = "
www.")) Then
If (LCase(Left(sVal4, 4) = "
www.")) Then
If (sTarget = "") then
sNew = Replace(sNew, sVal4, "<A
HREF=""http://" & sVal4 & """>" & sVal4 & "</A>")
Else
sNew = Replace(sNew, sVal4, "<A
HREF=""http://" & sVal4 & """ TARGET=""" & sTarget & """>" & sVal4 & "</A>")
End If
Else
If (sTarget = "") then
sNew = Replace(sNew, sVal4, "<A HREF=""" &
sVal4 & """>" & sVal4 & "</A>")
Else
sNew = Replace(sNew, sVal4, "<A HREF=""" &
sVal4 & """ TARGET=""" & sTarget & """>" & sVal4 & "</A>")
End If
End If
End If
' If this word looks like an e-mail address then convert
all
' occurrences into a mailto: link.
If (Instr(sVal4, "@") >= 2 And Instr(sVal4, ".") <> 0
And Len(sVal4) >= 5) Then
sNew = Replace(sNew, sVal4, "<A HREF=""mailto:" &
sVal4 & """>" & sVal4 & "</A>")
End If
Next
Next
Next
Next
' Return converted string
autoHighlight = sNew
End Function
%>
- men i visse tilfælde kikser den totalt umotiveret, se f.eks. denne side
nede i bunden:
http://arto.dk/dagens/default.asp?id=324&visAnnonce=True&visFooter=True
- Morten