webForumDet fria alternativet

Byta ut [detta] till en länk

ASP

11 svar · 248 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

Hallå!

Jag behöver hjälp med följande, att göra om ett stycke text med [hakparenteser] till en länk med samma innehåll, exempel:

Hej hopp i [hagen] detta var en fin liten [text] jag skrivit ihop här.

Alla ord med [ och ] ska bli en länk på följande vis:

Hej hopp i <A HREF="hagen">hagen</A> detta var en fin liten <A HREF="text">text</A> jag skrivit ihop här.

Detta är säkerligen lätt gjort med reg exp, men jag behöver koder för både och!

[r] Dessutom så ska server.UrlEncode köras på länken innan den skrivs ut.

[Redigerat av Pace den 25 sep 2001]

Medlem sedan dec. 19995 874 inlägg
#2

Kan detta kanske fungera?

Function urlStrim(cTxt)	
	Dim objRegExp	
	Set objRegExp = New RegExp	
	objRegExp.Pattern = "\[(.*?)\]"	
	objRegExp.IgnoreCase = True	
	objRegExp.Global = True	
	urlStrim = objRegExp.Replace(cTxt,"<a href=$1>$1</a>") 		
	Set objRegExp = Nothing
End Function

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan juni 20019 024 inlägg
#3

Funkar utmärkt, men hur gör man en UrlEncode på själva länken?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 19995 874 inlägg
#4

Jädrigt bra fråga.
Eftersom du vill köra server.urlencode() på $1, men gör du det så ersätts ju $1 också, och därmed försvinner ju den parametern och regexp förstår inte vad det är för något.

Man skulle kanske på något sätt kunna få fram matchningar som bara hittar det inom <a href="blabla">, men det vet jag inte hur man gör.

Troligen kanske det finns något enklare sätt.

För jag antar att du vill göra följande:

hugg = "<a href=" & server.urlencode("http://blabla") & ">blabla</a>"

och inte

hugg = server.urlencode("<a href=http://blabla>blabla</a>")

för det är enkelt...

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan dec. 19995 874 inlägg
#5

Kanske går det inte.

Ett bra sätt är att köra något sådant här..

For each match in matches
str = replace (str, match, server.UrlEncode(match))
Next

Vilket bör fungera fint..

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan dec. 19996 721 inlägg
#6
Function urlStrim(cTxt) 
Dim objRegExp,strTxt
strTxt=cTxt 
Set objRegExp = New RegExp 
objRegExp.Pattern = "\[(.*?)\]" 
objRegExp.IgnoreCase = True 
objRegExp.Global = True 
for each objMatch in objRegExp.Execute(strTxt)
strTxt = Replace(strTxt,objMatch.Value,"<a href=""" & server.urlencode(objMatch.Submatches(0)) & """>" & objMatch.Submatches(0) & "</a>")
next 
Set objRegExp = Nothing
urlStrim=strTxt
End Function

------------------
/emission
If you see someone without a smiley, give them your colon.

Medlem sedan mars 20007 896 inlägg
#7

emission, han kan han! :o :e

------------------
SPiN, bjorne.w@telia.com

-- Den som går i andras fotspår kommer aldrig först --

Medlem sedan dec. 19995 874 inlägg
#8

han snodde ju min lösning ;)

Medlem sedan juni 20019 024 inlägg
#9

Det visste jag väl hela tiden att man kan göra så, skulle bara se i fall ni var med! :p

Nåja, hur som helst! Tack emssion & Brimba! :)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

[Redigerat av Pace den 25 sep 2001]

Medlem sedan mars 20007 896 inlägg
#10

Han är ju så iskall också... Han säger ingenting, bara klistrar in koden! ;)

------------------
SPiN, bjorne.w@telia.com

-- Den som går i andras fotspår kommer aldrig först --

Medlem sedan dec. 19995 874 inlägg
#11

Japp.

submatches... självklart när man ser det, men inte lätt om man inte sett det tidigare :)

Men nu när man läser VBscript dokumentationen lite tydligare hittar man självklart detta:

Matches pattern and captures the match. The captured match can be retrieved from the resulting Matches collection, using the SubMatches collection in VBScript or the $0…$9 properties in JScript. To match parentheses characters ( ), use '\(' or '\)'.

Roligt att veta :)

------------------
Mvh
Patrik aka Brimba
<A HREF="http://www.brimba.nu/default.asp?oPID=poll&PollID=19" TARGET=_blank>Skulle du äta på restaurang, om det var rökförbud?
</A>Varför blir mina isbitar inte lika klara som i reklamen?

Medlem sedan juni 20019 024 inlägg
#12

Alla texter man läser är så självklara när man väl kan dem, men när man läser dem som nybörjare så fattar man ingenting! (rent generellt alltså) :)

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)