Avatar billede crapman Nybegynder
14. november 2002 - 18:16 Der er 12 kommentarer og
1 løsning

[url]replace[/url] - Regexp????

Heysa,

Sidder lige her og skal lave en url replacer til et forum... Da jeg ikke kun skal bruge den til url's men også andre ting virker en alm. url replacer ikke...

Jeg vil derfor lave en funktion der finder [url] og [/url] og udskifter det der står imellem med et tag som indeholder netop det der står imellem... giver det mening??godt!

Jeg har tænkt lidt på noget regexp, men hvordan får jeg så fundet ud af hvad der står imellem de to tags..???

Det kan også være du har en bedre idé...

Mvh Peter
Avatar billede oasen Nybegynder
14. november 2002 - 18:27 #1
Denne finder både mailadresser og url. Kan det bruges?


Function AutoLink(Streng)
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
If instr(Streng, "@") Then
    regEx.Pattern = "[a-z0-9\.\-\_]+\@[a-z0-9\.\-]+\.[a-z]{2,4}"
    Set Matches = regEx.Execute(Streng)
        For Each Match in Matches
            strMatch = Match.Value
            If Len(strMatch) > 25 Then
                strMatch = Left(strMatch, 25) & "..."
            End If
            Streng = Replace(Streng, Match.Value, "<a href='mailto:" & Match.Value & "'>" & LCase(strMatch) & "</a>")
        Next
Else
    regEx.Pattern = "(http://|www.|ftp://)[a-z0-9\.\-]+\.[a-z]{2,4}[a-z0-9\.\-\/]{0,}"
    Set Matches = regEx.Execute(Streng)
        For Each Match in Matches
            strMatch = Match.Value
            If Len(strMatch) > 25 Then
                strMatch = Left(strMatch, 25) & "..."
            End If
            If Left(LCase(Match.Value), 7) = "http://" Or Left(Lcase(Match.Value), 6) = "ftp://" Then
                Streng = Replace(Streng, Match.Value, "<a href='" & Match.Value & "' target='_blank'>" & LCase(strMatch) & "</a>")
            Else
                Streng = Replace(Streng, Match.Value, "<a href='http://" & Match.Value & "' target='_blank'>" & LCase(strMatch) & "</a>")
            End If
        Next
End If   
AutoLink = Streng 
End Function
Avatar billede eagleeye Praktikant
14. november 2002 - 18:38 #2
Ja det kan laves med RegExp


str = "en streng med et link i [url]www.noget.dk[/url] skal ses!"

Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True

regEx.Pattern = "(\[url\])(.*)(\[\/url\])"
 
str = regEx.Replace (str, "<a href=""$2"">$2</a>")

Set regEx = Nothing

Response.Write str
Avatar billede eagleeye Praktikant
14. november 2002 - 18:44 #3
Alternativt kan du bare havde en link konvereter som laver links i tekst www.eksperten.dk om til klikbare links som her på eksperten. 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 har et script/function som jeg selv bruger som laver link og email adresser i en teksten om til link, hvis du vil havde den.
Avatar billede crapman Nybegynder
14. november 2002 - 18:45 #4
Hmm, det ser ikke ud til at virke... den finder ikke alm. links....

Desuden er den heller ikke helt som jeg vil ha' det....

Meningen er nemlig at jeg også skal lave en funktion der finder en tegning....


Altså.. skriver man [tegning]28374[/tegning] laver den det hele om til <img src="image.asp?tegning=28374">

Min dilemma er altså... hvordan fanden får jeg fat i hvad der står MELLEM [tegning] og [/tegning]???????
Avatar billede eagleeye Praktikant
14. november 2002 - 18:48 #5
Som jeg har vist i mit svar.
Avatar billede crapman Nybegynder
14. november 2002 - 18:49 #6
Hehe, jah Eagle.. skrev mit svar før jeg så dit...

Anyway, vil jeg meget gerne have din funktion!
Avatar billede eagleeye Praktikant
14. november 2002 - 18:52 #7
Fra mit svar skal du skal så "bare" rette url til tegning og "<a href..." til "<img src...." osv..



OK her er functionen:
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 crapman Nybegynder
14. november 2002 - 18:57 #8
Hmm den ser nu ikke ud til at fungere helt.... nogle steder laver den links ud af noget som ikke er links, og andre steder afslutter den ikke linksene
Avatar billede crapman Nybegynder
14. november 2002 - 18:58 #9
Avatar billede eagleeye Praktikant
14. november 2002 - 18:59 #10
Den function jeg har lavet skal ikke havde [url] og [/url] omkring. Eller bruger du den fra svaret`?
Avatar billede crapman Nybegynder
14. november 2002 - 19:01 #11
jeg bruger den funktion du lige har givet mig.... :)

Prøvede bare lige at stresse den lidt.....
Avatar billede eagleeye Praktikant
14. november 2002 - 19:08 #12
Ok.. havd indeholde den?
Avatar billede crapman Nybegynder
14. november 2002 - 19:11 #13
Som du kan se her:
http://www.tegnebordet.dk/default.asp?vis=forum2&show=thread&thread=27&forum=1

Så laver den ikke links ordentligt...der er en post hvor der står www.hamsterking.com men linket sluttes ikke før 3. linje...
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