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