Avatar billede 3dmaxer.dk Nybegynder
28. november 2000 - 22:51 Der er 6 kommentarer og
1 løsning

aktiv link i post

Jeg har fundet et script som jeg har modereret lidt. Scriptet laver alle webadresser i en post om til aktive links fx www.stite-navn.dk.

Problemet er at der SKAL være mellemrum efter linket - eller virker det ikke. Jeg vil gerne have at linket også virker hvis der bare er trykket return bag ved linket (<br>) og intet mellemrum. Er der en der kan lave scriptet om så det kan lade sig gøre?

Function LinkTekst(Tekst)
LinkTekst = \"\"
A_Start = 1

if InStr(Tekst, \"www\") then
  do until A_Start >= len(Tekst)
  LinkChr = InStr(A_Start, Tekst, \"www\")
  NextSpace = InStr(LinkChr, Tekst, \" \")

  if NextSpace = 0 then NextSpace = Len(Tekst) + 1

  URL = Mid(Tekst, LinkChr, NextSpace - LinkChr)
  http = \"http://\" 

  LinkTekst = LinkTekst & Mid(Tekst, A_Start, LinkChr - A_Start)
  LinkTekst = LinkTekst & \"<A Href=\" & Chr(34) & http & URL & Chr(34) & \" target=\'_blank\'>\" & URL & \"</A>\"

  if Int(LinkChr) = Int(InStrRev(Tekst, \"www\")) then
    LinkTekst = LinkTekst & Mid(Tekst, NextSpace, Len(Tekst) - A_Start)
    A_Start = Len(Tekst)
  else
    A_Start = NextSpace
  end if
  loop
else
  LinkTekst = Tekst
end if
End Function
Avatar billede soerens Nybegynder
29. november 2000 - 09:12 #1
Prøv med nedenstående kode, der benytter sig af Regular Expressions. Jeg har ikke selv testet det af, så respons er velkommen ;-)

\'----------------------------------------------
\' InsertHyperlinks(inText)
\' Returns a inText with \"<a href=\"URL\" target=\"_BLANK\">URL</a>\"
\' inserted where there is URL found.
\'
\' URL can start with \"www\" or \"http\"
\' or
\' URL can be a email address \"*@*\"
\'----------------------------------------------
Function InsertHyperlinks(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\"  \' Match URLs and emails
  objRegExp.IgnoreCase = True                  \' Set case insensitivity.
  objRegExp.Global = True                      \' Set global applicability.
  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)
  InsertHyperlinks = 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
Avatar billede ubbe Nybegynder
29. november 2000 - 14:39 #2
hvad mener du med post, en email post, eller noget der kommer fra tekst felt, og ind i en db. Også når du trækker det ud vil du have det til et aktivt link eller hvad???????? ;0)
Avatar billede timsen Nybegynder
29. november 2000 - 14:41 #3
Hvad mener du med at der SKAL være mellemrum og hvorfor ??
Avatar billede 3dmaxer.dk Nybegynder
29. november 2000 - 17:27 #4
soerens: Det er nøjagtig sådan noget jeg vil have - den kode ser lidt bedre ud end den jeg har (flere funktioner). Jeg kan dog bare ikke få det til at virke - sker ingenting - jeg må gøre et eller andet forkert. Har du fået afprøvet den? Hvor har du fundet scriptet?

Den der kan fortælle mig hvordan jeg får soerens script til at virke for også point.

Ubbe: Tekst som kommer fra en db og ja til at linksene skal være aktive

timsen: Sådan som koden er (den jeg postede) så skal der være et mellemrum efter linket ellers virker koden ikke. Den kan ikke finde ud af det hvis der ikke er et mellemrum bagefter.
Avatar billede soerens Nybegynder
30. november 2000 - 08:39 #5
Hmmm, følgende stump kode virkede fint hos mig:

<HTML>
<HEAD>
</HEAD>
<BODY>
<!-- #include virtual=\"/inc/InsertHyperlinks.asp\" -->
<%
strURL = \"Gå ind på www.netsoc.dk og få noget på den dumme! Får du ikke det så mail giz@netsoc.dk så ordner han det...\"

Response.Write InsertHyperlinks(strURL)
%>
</BODY>
</HTML>

Både www og emailen bliver til hyperlinks.

Koden har jeg fået af en gammel kollega, men kender jeg ham ret kan man sikkert finde den på www.4GuysFromRolla.com
Avatar billede soerens Nybegynder
30. november 2000 - 09:29 #6
Yup, fandt den efter ca. 30 sekunder på denne URL:

http://www.4guysfromrolla.com/webtech/tips/t110900-1.shtml
Avatar billede 3dmaxer.dk Nybegynder
30. november 2000 - 18:52 #7
så virker det
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