Avatar billede mekaniker Nybegynder
16. marts 2003 - 12:31 Der er 7 kommentarer og
1 løsning

Hjælp til at finde en felj i en add-link funktion.

Jeg har fundet denne funktion som laver et skrevet link om til et klikbart link.

Jeg har et felt i en access db, som er defineret som notat.
dvs. attt funktionen skal ledde en masse tekst igennem.

Men der er desværre en fejl som jeg ikke kan finde, hvis man skriver det samme link 2 gange i teksten fejler den.

//Mekaniker
Avatar billede mortrr Praktikant
16. marts 2003 - 12:37 #1
Det ville nok være en del nemmere at hjælpe hvis du viste funktionen.
Avatar billede 12tri Nybegynder
16. marts 2003 - 12:47 #2
script?
Avatar billede mekaniker Nybegynder
16. marts 2003 - 13:13 #3
Sorry, jeg er sgu' ikke helt vågen endnu.

<%
Function addLinks(sInput, sTarget)
    Dim sNew, sPunct
   
    ' 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, Replace(sVal4, "http://", ""))
                Else
                    sNew = Replace(sNew, sVal4, Replace(sVal4, "http://", ""))
                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
    addLinks = sNew
End Function
%>
Avatar billede somaliomar Praktikant
16. marts 2003 - 13:56 #4
Prøv denne funktion i stedet for:

Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")

objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing

LinkString2 = strOutput
End Function
Avatar billede mekaniker Nybegynder
18. marts 2003 - 13:18 #5
>> somaliomar

Kan du ikke hjælpe mig med at få den til at tage emails.
Avatar billede somaliomar Praktikant
18. marts 2003 - 17:23 #6
Prøv med

Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpEMail.Replace(strInput, " <a href='mailto:$1'>$1</a> ")
strOutput = objRegExpHTTP1.Replace(strOutput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")

objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkString2 = strOutput
End Function
Avatar billede mekaniker Nybegynder
18. marts 2003 - 19:07 #7
Jeg har fået det til at virke selv, med følgende.

<%
Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpMAILTO1 = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
objRegExpMAILTO1.Pattern = "(\S+@{1}\S+\.\w+\b)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpMAILTO1.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpMAILTO1.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, " <a href='$1$2' target='_blank'>$1$2</a> ")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2' target='_blank'>$2</a> ")
strOutput = objRegExpMAILTO1.Replace(strOutput, "<a href=""mailto:$1"">$1</a>")

objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")
objRegExpMAILTO1.Pattern = "(<br>|[,.)\]\}])(</a>)"
strOutput = objRegExpMAILTO1.Replace(strOutput, "$1")

Set objRegExpMAILTO1 = Nothing
Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing

LinkString2 = strOutput
End Function
%>
Avatar billede somaliomar Praktikant
18. marts 2003 - 19:19 #8
Tak for points...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester