Avatar billede hobbez Nybegynder
02. marts 2004 - 16:21 Der er 8 kommentarer og
1 løsning

Avanceret replace - regular expression

Her er en del af et større script:

Om input kommer der naturligvis et link:

sOutput = sOutput.replace(/\b(http\:\/\/[\w+\.]+[\w+\.\:\/\@\_\?\=\&\-\'\#\%\~\;\,\$\!\+\*]+)/gi,
"<a href=\"$1\"target=\"_blank\">$1<\/a>");

Hvorden modificerer jeg ovenstående, således at jeg IKKE får en target:\_blank med, hvis der er tale om et INTERNT link (relativt link), men KUN hvis der er tale om et eksternt link?

Jeg kan godt sørge for, at interne links altid starter med /.

Jeg går ud fra at det må være noget med at smække en IF ind :o)

/Rob
Avatar billede bearhugx Nybegynder
02. marts 2004 - 16:24 #1
du kan da altid lave den antagelse at links kun er eksterne, hvis der er et http:// eller ftp:// foran ...

hvis en bare skriver <a href="www.eksperten.dk"> ccc </a> .. så er det ikke eksperten, man kommer hen på -- det er kun hvis der er protokol foran ...

Derfor - lav en funktion, som tjeker om der er protokol i starten af URL'en (kan gøres ved at checke for :// -- så kan du bedømme om det er et internt eller eksternt link :-)
Avatar billede ellebaek Nybegynder
02. marts 2004 - 16:29 #2
Function LinkToString(strInput)
            Set objRegExpHTTP1 = New RegExp
            objRegExpHTTP1.Global = True
            objRegExpHTTP1.IgnoreCase = True
       
            objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
            strOutput = objRegExpHTTP1.Replace(strInput, "<a href=""$1$2$3$4"" target=""_blank"">$1$2$3$4</a>")

            objRegExpHTTP1.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
            strOutput = objRegExpHTTP1.Replace(strOutput, " $1<a href=""http://$2$3$4"">$2$3$4</a>")

            set objRegExpHTTP1 = Nothing

            LinkToString = strOutput
        End Function

Jeg plejer at bruge dette... Det er så rettet til, så du kun har target med hvis der er http foran. den anden linie som ikke har http:// foran forudsætter dog i stedet www. men du kan så selv definere hvis du fx. vil have [a] til internt link etc.
Avatar billede hobbez Nybegynder
02. marts 2004 - 17:03 #3
ellebaek:

Det er den ikke så glad for:

Microsoft VBScript compilation error '800a03ea'

Syntax error

/test.asp, line 14

Set objRegExpHTTP1 = New RegExp
---------------------^

Jeg kører ASP fra ChilliSoft - nogen forslag?

/Rob
Avatar billede ellebaek Nybegynder
02. marts 2004 - 17:25 #4
ChiliASP understøtter ikke regexp...
2 sek. Eagle kom med en løsning på dette på et tidspunkt, leder lige efter det spg.
Avatar billede ellebaek Nybegynder
02. marts 2004 - 17:29 #5
http://www.eksperten.dk/spm/402548

Her er link til det spg hvor eagle kommer med alternative løsninger som kan benyttes.
Avatar billede hobbez Nybegynder
13. marts 2004 - 16:12 #6
Jeg fandt en anden løsning.

Læg svar hvis I vil have del i point!

/Rob
Avatar billede ellebaek Nybegynder
13. marts 2004 - 19:06 #7
et svar...
Avatar billede hobbez Nybegynder
23. marts 2004 - 13:40 #8
Beklager ventetiden!

/Rob
Avatar billede ellebaek Nybegynder
24. marts 2004 - 12:32 #9
Det er helt i orden.

Håber du fik det til at virke..
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