Avatar billede piil Nybegynder
28. marts 2002 - 22:35 Der er 8 kommentarer og
1 løsning

RegExp for URL's and e-mail's

Jeg er ved at lave en funktion der kan linke (sætte a href's rundt om) URL's or e-mail adresser. Den med e-mail adressen er let nok at lave. Mit problem er at min funktion for URL's også vælger e-mail addresser.
for eksempel bliver piilstil.com fra e-mail addressen piil@piilstil.com, lavet om til et link. Desværre kan jeg ikke bare tjekke for www for ikke alle URL's har dette. Jeg har kigget på alle de funktioner der allerede ligger på netcoders.dk og activedeveloper.dk, men ingen af dem lever op til mine krav.


<%@ LANGUAGE=VBscript %>
<%
Function createLink(str)
'remove any http://
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
regEx.Pattern = "(\bhttp\:\/\/)+"
str = regEx.Replace(str, "")

'create links for URL's
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = True
' regEx.Pattern = "(\b\S+\.\S+\b)?"
regEx.Pattern = "(\b a-zA-Z0-9\.+\. a-zA-Z0-9\.\?\=\&\/+\b)?"
str = regEx.Replace(str, "<a href='http://$1'>$1</a>")


'create links for a-mail's
' Set regEx = New RegExp
' regEx.Global = true
' regEx.IgnoreCase = True
' regEx.Pattern = "(\b\S+\@\S+\b)"
' regEx.Pattern = "(\S+\@{1}\S+\.\S+\b)"
' str = regEx.Replace(str, "<a href='mailto:$1'>$1</a>")


Set regEx = Nothing

createLink = str
End Function
%>
<html>
<head>
</head>
<body>
<%
linktext = "Check out: "
linktext = linktext & "www.piilstil.com "
linktext = linktext & "og netcoders.dk?mode=display "
linktext = linktext & "og netcoders.dk/default.asp?action=display&s=4 "
linktext = linktext & "og netcoders.dk/default.asp. "
linktext = linktext & "og netcoders.dk "
linktext = linktext & "og www.piilstil.dk og www.piilstil.com/default.asp "
linktext = linktext & "og baggett.piilstil.com "
linktext = linktext & "og my e-mail address is <piil@piilstil.com>. "
linktext = linktext & "og http://www.piilstil.com "
linktext = linktext & "og my e-mail address is piil@piilstil.com. "
linktext = linktext & "Min fars e-mail address is ole.piil@piilstil.com. "
linktext = linktext & "Mor og far er i Danmark. testing1,2,3. test "
linktext = linktext & "og eddress.test.piilstil.com "
%>


<%=createLink(linktext)%>


</body>
</html>



På forhånd tak

/piil
Avatar billede invisibleman Nybegynder
28. marts 2002 - 22:38 #1
Brug denne istedet:

    Function LinkString(strInput)
        arrPattern = Array("([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,4}\S*)", _
        "(http|https|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)", _
        "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,4}\S*)")

        arrReplaceString = Array(" <a href='mailto:$1'>$1</a> ", _
        " <a href='$1$2' target='_blank'>$1$2</a> ", _
        " <a href='http://$2' target='_blank'>$2</a> ")

        Set Rx = New RegExp
        Rx.Global = True
        Rx.IgnoreCase = True

        For intIndex = 0 To UBound(arrPattern)
            Rx.Pattern = arrPattern(intIndex)
            strInput = Rx.Replace(strInput, arrReplaceString(intIndex))
        Next
       
        Set Rx = Nothing

        LinkString = strInput
    End Function
Avatar billede piil Nybegynder
29. marts 2002 - 08:19 #2
Check out: www.piilstil.com og netcoders.dk?mode=display og netcoders.dk/default.asp?action=display&s=4 og netcoders.dk/default.asp. og netcoders.dk og www.piilstil.dk og www.piilstil.com/default.asp?mode=5&id=6 og baggett.piilstil.com og my e-mail address is piil@piilstil.com. og http://www.piilstil.com og my e-mail address is piil@piilstil.com. Min fars e-mail address is ole.piil@piilstil.com. Mor og far er i Danmark. testing1,2,3. test og eddress.test.piilstil.com
Avatar billede piil Nybegynder
29. marts 2002 - 08:20 #3
test din funktion med ovenstående streng. Den virker jo ikke med URL's uden www foran....
Avatar billede invisibleman Nybegynder
29. marts 2002 - 14:51 #4
Nej det er klart for ellers ville alt med et punktum imellem blive registreret som en URL !

Kig selv her på Eksperten, dit netcoders.dk link er ikke et link !

Jeg lægger svar igen da mit svar *ER* korrekt og virker som det skal.
Avatar billede invisibleman Nybegynder
29. marts 2002 - 14:52 #5
Der SKAL være www. eller http:// foran URL's ..
Avatar billede piil Nybegynder
29. marts 2002 - 22:09 #6
Selvfølgelig kan det laves så den gør det rigtigt. Hvad er det for noget vrøvl at sige at der SKAL være www foran URL's. Prøv at skrive netcoders.dk i din browser og se hvad der sker.

Desuden har jeg endeligt fået det til at virke. Desuden kan du i regular expression chekke om det du er ved at highlighte har en @ eller ej. Så det er ikke alt med punktum der vil blive registreret...
Avatar billede invisibleman Nybegynder
29. marts 2002 - 23:14 #7
Nu snakkede du om HTTP adresser og IKKE emails !
At du kan skrive "netcoders.dk" i din browser er for at gøre det nemt for brugeren. Prøv Lynx til Linux, der *skal* du angive protokollen (her, http://). Så den er god nok !

Du skal ikke regne med hjælp en anden gang hvis det er på denne her måde du gør det.
Avatar billede Slettet bruger
04. juni 2003 - 21:15 #8
piil definere sine krav til den løsning han forventer at få herinde at du (invisibleman) syntes at det er en forkert måde at gøre det på, ændre jo ikke på kravet til løsningen.
Avatar billede piil Nybegynder
04. juni 2003 - 21:31 #9
Jeg havde brug for et svar der både kan bruges for e-mail adreser og URL's.
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