Avatar billede lemk5 Nybegynder
18. maj 2003 - 12:27 Der er 5 kommentarer og
1 løsning

finde links i gæstebog

Hej
Hvis folk nu skriver et url i min gæstebog vil jeg gerne have at det bliver til et link.
lidt psydo kode :
if besked indholder www

find hele url
og lav det om til link

noget i iden stil :D

/lemk5
Avatar billede eagleeye Praktikant
18. maj 2003 - 12:31 #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
18. maj 2003 - 12:32 #2
Hvis den også skal lave email om til email links så kan den udvides såda her:

MED EMAIL:

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 lemk5 Nybegynder
18. maj 2003 - 12:33 #3
tak for det hurtige svar, kan desværre ikke lige teste det nu men ser på det senere.
Avatar billede -master-d- Nybegynder
18. maj 2003 - 12:47 #4
En der er lidt nemmere at overskue er denne som netsrac har lavet.

<%
function autoHighLight(Streng)
Set regEx = New RegExp  ' Create a regular expression.
regEx.Pattern = "(http://|www.|ftp://|http://www\.)[a-z0-9\.\-]+\.[a-z]{2,}[a-z0-9\.\-\/]{0,}"
regEx.IgnoreCase = True  ' Set case insensitivity.
regEx.Global = True  ' Set global applicability.
Set Matches = regEx.Execute(Streng)  ' Execute search.
    For Each Match in Matches  ' Iterate Matches collection.
        If Left(LCase(Match.Value), 7) = "http://" OR Left(Lcase(Match.Value), 6) = "ftp://" then
            Streng = Replace(Streng, Match.Value, "<A HREF=""" & Match.Value & """>" & Match.Value & "</A>")
        Else
            Streng = Replace(Streng, Match.Value, "<A HREF=""http://" & Match.Value & """>" & Match.Value & "</A>")
        End if
    Next
autoHighLight = Streng 
end function
%>

Også kunne du bare lave det på denne måde

<%
Set rs = Conn.Execute("SELECT * FROM Guestbook")
If Not (rs.bof or rs.eof) then
Do While Not rs.eof
Response.Write autoHighLight(rs("Besked"))
rs.MoveNext
Loop
End IF
%>
Avatar billede lemk5 Nybegynder
18. maj 2003 - 19:42 #5
så nu har jeg testet det.. og fandt at det nemeste var at bruge netsrac selvom det andet sikkert virker fint (fik dog en type mismatch error med eagleeye's forslag...)
Avatar billede eagleeye Praktikant
18. maj 2003 - 23:15 #6
Det lyder underligt du får fejl det skulle være direkte copy/paste fra en side jeg bruger det på... Nå pyt med det.

Jeg har lige testet autoHighLight functionen som vist og den er ikke bestået den test streng jeg bruger til at teste link functioner. Prøv at skrive links i () eller []. Det havde være lidt iorden hvis den bare ikke lavede linksne rigtigt, men den ødelægger totalt output strengen.
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