Avatar billede Slettet bruger
31. januar 2004 - 13:42 Der er 19 kommentarer og
1 løsning

reg. exp tagster

Hej,

Jag fandt over dette script i http://www.eksperten.dk/spm/446229

hvor eagleeye skriver at det både parser emails og urls, jeg kan nu ikke få det til at virke med email. Anyone? Jeg ville også gerne ha' den til at parse urls der er indtastet uden www eller http:// - altså skal eksperten.dk også laves til link.
Avatar billede eagleeye Praktikant
31. januar 2004 - 14:09 #1
Det var faktsik en skrive fejl. Den tager ikke email adresse :)
Du skal nok prøve at tage et kig på denne:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=859&tech_id=1
Avatar billede Slettet bruger
31. januar 2004 - 14:12 #2
Har jeg kigget på - men jeg ville gerne bruge reg. exp da det skulle være hurtigere. Det skal nemlig køres på noget der i forvejen modificeres heftigt af andre funktioner, så performance er ret vigtigt :)
Avatar billede Slettet bruger
31. januar 2004 - 14:48 #3
har kigget lidt på de reg exp linkmakers der er på activedeveloper, men der er bugs i næsten allesammen :(
Avatar billede Slettet bruger
31. januar 2004 - 15:23 #4
den jeg søger, skal også kunne håndtere urls hvor der indgår querystrings
Avatar billede eagleeye Praktikant
31. januar 2004 - 15:55 #5
jeg vil da godt lige prøve at kigge på det... men det med links uden www eller http:// ved jeg ikke om er lige til for den kommer umiddelbart til at tage email adresser som links.. men det skulle vist være til at få email adresser med i viste funktion.
Avatar billede Slettet bruger
31. januar 2004 - 16:25 #6
hmm, har nu brygget den her sammen og den virker faktisk fint

<%
function autoHighLight(Streng)
    Set objRegExpHTTP1 = New RegExp
    objRegExpHTTP1.Global = True
    objRegExpHTTP1.IgnoreCase = True
    ' Links der starter med http, ftp eller https
    objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
    Streng = objRegExpHTTP1.Replace(Streng, "<a href=""$1$2$3$4"" onclick=""window.open(this.href,'_blank');return false;"">$1$2$3$4</a>&nbsp;<img src=""graf/link.gif"" alt=""Link til http$2$3$4"" />")

    ' Links der starter med www
    objRegExpHTTP1.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
    Streng = objRegExpHTTP1.Replace(Streng, " $1<a href=""http://$2$3$4"" onclick=""window.open(this.href,'_blank');return false;"">$2$3$4</a>&nbsp;<img src=""graf/link.gif"" alt=""Link til $2$3$4"" />")

    ' mailto links
    objRegExpHTTP1.Pattern = "(\S+@{1}\S+\.\w+\b)"
    Streng = objRegExpHTTP1.Replace(Streng, "<a href=""mailto:$1"">$1</a>")
   
    set objRegExpHTTP1 = Nothing
autoHighLight = Streng
end function
%>
Avatar billede Slettet bruger
31. januar 2004 - 16:28 #7
jeg lukker og accepterer at links uden præfiks ikke kommer med
Avatar billede Slettet bruger
31. januar 2004 - 16:37 #8
til gengæld har jeg problemer med denne linie

' mailto links
objRegExpHTTP1.Pattern = "(\S+@{1}\S+\.\w+\b)"
Streng = objRegExpHTTP1.Replace(Streng, nospam($1,"email") & "&nbsp;<img src=""graf/email.gif"" alt=""Email"" />")
Avatar billede Slettet bruger
31. januar 2004 - 16:38 #9
nospam funktionen følger her

function nospam(strEmail, strText)
   
    for i = 1 to Len(strEmail)
        strEmailEncoded = strEmailEncoded & "&#" & asc(Mid(strEmail, i, 1)) & ";"
    next
   
    if trim(strText) = "" then
        strText = strEmailEncoded
    else
        for i = 1 to Len(strText)
        strTextEncoded = strTextEncoded & "&#" & asc(Mid(strText, i, 1)) & ";"
        next
    end if
   
    strMailPart = split(strEmailEncoded,"&#64;",-1,1)

    nospam = "<script type=""text/Javascript"">" & vbcrlf
    nospam = nospam & "var user = """ & strMailPart(0) & """;" & vbcrlf
    nospam = nospam & "var domain = """& strMailPart(1) & """;" & vbcrlf
    nospam = nospam & "var mail = user + ""&#64;"" + domain;" & vbcrlf
    nospam = nospam & "var linkText = """& strText & """;" & vbcrlf
    nospam = nospam & "document.write(""<a href=\""&#109;&#97;&#105;&#108;&#116;&#111;&#58;""+mail+""\"">""+linkText+""</a>"");" & vbcrlf
    nospam = nospam & "</script>"

end function
Avatar billede eagleeye Praktikant
31. januar 2004 - 16:39 #10
Jeg har brugt dette som pattern:

objRegExpHTTP1.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"
Avatar billede Slettet bruger
31. januar 2004 - 16:43 #11
kan du se hvad der er galt med
' mailto links
objRegExpHTTP1.Pattern = "(\S+@{1}\S+\.\w+\b)"
Streng = objRegExpHTTP1.Replace(Streng, nospam($1,"email") & "&nbsp;<img src=""graf/email.gif"" alt=""Email"" />")

det er i selve replace funktionen det går galt
Avatar billede eagleeye Praktikant
31. januar 2004 - 16:47 #12
du kan ikke havde $1 uden for " " det er varible til Replace functionen.
Så må du lave det med som execute eks:

set matches=regEx.Execute(streng)
For each match in matches
  streng = Replace(Streng, match.value, nospam(match.value,"email") & "&nbsp;<img src=""graf/email.gif"")
next
Avatar billede Slettet bruger
31. januar 2004 - 16:48 #13
ok - jeg er ikke så familiær med reg exp :)
Avatar billede Slettet bruger
31. januar 2004 - 16:49 #14
hmm

    ' mailto links
    set matches=objRegExpHTTP1.Execute(streng)
    For each match in matches
      streng = Replace(Streng, match.value, nospam(match.value,"email") & "&nbsp;<img src=""graf/email.gif"")")
    next

nu siger den Antallet af argumenter er forkert eller egenskabstildelingen er ugyldig: 'nospam'
Avatar billede eagleeye Praktikant
31. januar 2004 - 16:51 #15
har du ikke en function som hedder nospam ?
Avatar billede Slettet bruger
31. januar 2004 - 16:53 #16
jo - den er included, og er den jeg postede 31/01-2004 16:38:20
Avatar billede eagleeye Praktikant
31. januar 2004 - 17:03 #17
hmm underligt..Er det mig eller er dr ikke kommet for emget med i denne linje:?
streng = Replace(Streng, match.value, nospam(match.value,"email") & "&nbsp;<img src=""graf/email.gif"")")

Prøv:
streng = Replace(Streng, match.value, nospam(match.value,"email") & "&nbsp;<img src=""graf/email.gif"")
Avatar billede Slettet bruger
31. januar 2004 - 17:06 #18
hov - der var <img> tagget ikke lukket, men med

Streng = Replace(Streng, match.value, nospam(match.value,"email") & "&nbsp;<img src=""graf/email.gif"" />") giver den stadig

Antallet af argumenter er forkert eller egenskabstildelingen er ugyldig: 'nospam'
Avatar billede Slettet bruger
31. januar 2004 - 18:04 #19
det må være noget med at nospam funktionen ikke betragter match.value som en gyldig streng.. Har prøvet med Cstr()
Avatar billede Slettet bruger
31. januar 2004 - 19:06 #20
doh!

Det var noget så tåbeligt som at jeg havde en anden funktion der hed det samme i en anden include fil !

Det virker perfekt nu :)
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