Avatar billede vraa Nybegynder
05. juli 2003 - 10:37 Der er 14 kommentarer og
1 løsning

Link i forum

Jeg leder efter en funktion der gør at alle former for link bliver vist som et link i et forum. Varianeter som "http://www.websted.dk", "http://websted.dk", "www.websted.dk", "emails" osv.
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:13 #1
Du skal havde en function som kan lave links i tekst om til klikbare links:

Der har været en konkurrence på www.netkoders.dk og vinder script er her:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=859&tech_id=1

Runner ups:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=860&tech_id=1


Jeg bruger selv denne som laver www adresse samt email adresse om til trykbare links.


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


Og den kaldes sådan her:

str = "En steng som indeholder links (www.eksperten.dk) som skal laves om til klikbare links."
response.write linkString2 (str)
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:19 #2
Et alternativ kunne være denne:
Den tager også mail links med det kan den anden jeg har vist også gøre hvis det ligges ind i den.


function makeLink(str)
    '*** Make the reqular expr object
    Set objRegExp = New RegExp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True

    '***Make html links
    objRegExp.Pattern = "(\bhttp\:\/\/)?(\bw{3}\.\S+\.[a-z][a-z]+\b)(\/\S+\b)?(\?\S+\b)?"
    str = objRegExp.Replace(str, "<a href="&chr(34)&"http://$2$3$4"&chr(34)&" target=""_blank"">$1$2$3$4</a>")

    '***Make html mailto
    objRegExp.Pattern = "(\S+@{1}\S+\.[a-z][a-z]+\b)"
    str = objRegExp.Replace(str, "<a href="&chr(34)&"mailto:$1"&chr(34)&">$1</a>")
    Set objRegExp = Nothing
    makelink = str
end function
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:20 #3
Her er den føste jeg har vist med emais:



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 vraa Nybegynder
05. juli 2003 - 11:28 #4
Jeg får en fejl på linie 58 i deres script:

Invalid use of Null: 'InStrRev'
Avatar billede vraa Nybegynder
05. juli 2003 - 11:29 #5
Tror jeg prøver din version. Hvad betyder tegnet $
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:31 #6
I regular expreseion giver den nogle variable ud $1 $2 $n for hver sæt af ( )
Så det er variable navne for regular expreseion objectet.
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:37 #8
Prøv lige at bruge denne function så:


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}[a-z0-9\.\-\/]{0,})"
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>")

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

LinkString2 = strOutput
End Function
Avatar billede vraa Nybegynder
05. juli 2003 - 11:43 #9
Den gør det samme. Fejlen er hvis jeg laver et linieskift i mit textarea efter et link.

F.eks.
blabla http://allanvraa.dk
blabla blabla

så bliver "http://allanvraa.dk *linieskift*
blabla" til et link

blabla http://allanvraa.dk blabla

virker fint nok
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:46 #10
hmm mærkeligt du laver ikke linjeskift om til <br> ??

så prøv den som er i kommentar 05/07-2003 11:20:20
Avatar billede vraa Nybegynder
05. juli 2003 - 11:48 #11
jo jeg laver linieskift om til <br>. Ellers bliver mit output forkert.
Avatar billede eagleeye Praktikant
05. juli 2003 - 11:57 #12
Ok, så prøv at laves linjeskift om til <br> efter functionen er kaldt som laver links.
Hvis det kommer fra en database så lave <br> om til vbCrLf og tilbage igen.
Avatar billede c Nybegynder
05. juli 2003 - 13:51 #13
nu husker i ved at lave dem om til links før i gemmer, ik?
Avatar billede vraa Nybegynder
05. juli 2003 - 22:36 #14
Nu virker det.... næsten :-)

Hvis jeg vil ligge følgende i DB:

http://allanvraa.dk
vraa@stofanet.dk
http://www.allanvraa.dk
www.allanvraa.dk

...kommer det til og se således ud:

http://allanvraa.dk
vraa@stofanet.dk
http://www.allanvraa.dk www.allanvraa.dk

Og jeg kalder funktionen som det første inden jeg gemmer i DB
Avatar billede vraa Nybegynder
05. juli 2003 - 22:37 #15
Det gør ingenting. Jeg takker mange gange for funktionen.
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