Avatar billede viperfx102 Nybegynder
29. december 2001 - 12:06 Der er 3 kommentarer og
1 løsning

Link i forum

Jeg er igang med at lave et forum, der vil jeg gerne have at hvis man indtaster en URL, enten med www. eller http://, i beskeden så bliver det automatisk til et link! Hvordan drejer jeg lige den??
Avatar billede Slettet bruger
29. december 2001 - 12:12 #1
Jeg har en funktion du kan bruge:

<%
Function makeLinks(inText)
Dim objRegExp, strBuf
Dim objMatches, objMatch
Dim Value, ReplaceValue, iStart, iEnd

  strBuf = \"\"
  iStart = 1
  iEnd = 1
  Set objRegExp = New RegExp

  objRegExp.Pattern = \"\\b(www|http|\\S+@)\\S+\\b\"
  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  Set objMatches = objRegExp.Execute(inText)
  For Each objMatch in objMatches
    iEnd = objMatch.FirstIndex
    strBuf = strBuf & Mid(inText, iStart, iEnd-iStart+1)
    If InStr(1, objMatch.Value, \"@\") Then
      strBuf = strBuf & GetHref(objMatch.Value, \"EMAIL\", \"_BLANK\")
    Else
      strBuf = strBuf & GetHref(objMatch.Value, \"WEB\", \"_BLANK\")
    End If
    iStart = iEnd+objMatch.Length+1
  Next
  strBuf = strBuf & Mid(inText, iStart)
  makeLinks = strBuf
End Function


Function GetHref(url, urlType, Target)
Dim strBuf

  strBuf = \"<a href=\"\"\"
  If UCase(urlType) = \"WEB\" Then
    If LCase(Left(url, 3)) = \"www\" Then
      strBuf = \"<a href=\"\"http://\" & url & \"\"\" Target=\"\"\" & _
              Target & \"\"\">\" & url & \"</a>\"
    Else
      strBuf = \"<a href=\"\"\" & url & \"\"\" Target=\"\"\" & _
              Target & \"\"\">\" & url & \"</a>\"
    End If
  ElseIf UCase(urlType) = \"EMAIL\" Then
    strBuf = \"<a href=\"\"mailto:\" & url & \"\"\" Target=\"\"\" & _
            Target & \"\"\">\" & url & \"</a>\"
  End If
 
  GetHref = strBuf

End Function
%>

Bruges sådan her:

<%=makeLinks(tekstVariabel)%>

tekstVariabel kan så f.eks. være et felt i en database.
Avatar billede dth Nybegynder
29. december 2001 - 12:13 #2
Hmm... du skal først splitte teksten op i ord og lægge dem i et array, derefter kan du begynde at kigge på hvert enkelt ord:

For i = 0 to Ubound(arrtekst)
           
            If Mid(arrtekst(i), 1, 4) = \"www.\" then
                arrtekst(i) = \"<A href=http://\" & arrtekst(i) & \" target=_blank>\" & arrtekst(i) & \"</A>\"
            End if
           
            If Mid(arrtekst(i), 1, 7) = \"http://\" then
                arrtekst(i) = \"<A href=\" & arrtekst(i) & \" target=_blank>\" & arrtekst(i) & \"<A>\"
            End if
           
            For j = 1 to Len(arrtekst(i))
                If mid(arrtekst(i), j, 1) = \"@\" then
                    arrtekst(i) = \"<A href=mailto:\" & arrtekst(i) & \">\" & arrtekst(i) & \"</A>\"
                End if
            Next
                   
        Next

Og derefter sætte ordene sammen igen

/trier
Avatar billede viperfx102 Nybegynder
29. december 2001 - 12:17 #3
Takker #:o)
Avatar billede Slettet bruger
29. december 2001 - 12:19 #4
Selv tak :)

Har også en anden, og mindre funktion du kan få, men den kan ikke tage websites, der ikke indeholder www. F.eks. http://website.dk
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