webForumDet fria alternativet

funktion...

ASP

6 svar · 300 visningar · startad av henrikjohansson

Medlem sedan maj 2000360 inlägg
Frågan#1

Jag har skrivit en funktion som skall byta ut alla farliga tecken mot "bra" koder och som skall göra om alla länkar och emailadresser till länkar... Jag löste det så här men jag tänkte bara fråga er experter om detta är en bra lösning eller om den belastar servern mycket om det är mycket text som skall hanteras..

Function FixaLankar(gString)

dim Tmp
if isnull(gstring) then exit function

gString = Server.HTMLEncode(gString)

Tmp = split(gString," ")

for x = 1 to Ubound(Tmp)

	if lcase(left(Tmp(x),3)) = "www" then
		Tmp(x) = "<a href=" & """" & "http://" & Tmp(x) & """" & ">" & Tmp(x) & "</a>"
	elseif lcase(left(Tmp(x),7)) ="http://" then
		Tmp(x) = "<a href=" & """" & Tmp(x) & """" & ">" & Tmp(x) & "</a>"
	elseif instr(Tmp(x),"@") <> 0 then
		if Tmp(x) = "h_johansson83@hotmail.com" then
			Tmp(x) = "<a href=" & """" & "index.asp?sida=skicka" & """" & ">" & Tmp(x) & "</a>"
		else
			Tmp(x) = "<a href=" & """" & "mailto:" & Tmp(x) & """" & ">" & Tmp(x) & "</a>"
		end if
	end if
temp = temp & " " & Tmp(x)
next

FixaLankar = temp

End Function
Medlem sedan maj 200010 687 inlägg
#2

Borde nog vara bättre o göra med regulära uttryck. :)

Medlem sedan sep. 20005 700 inlägg
#3

jo, regexp skulle nog vara bättre, det går väl fortare oxå..

Medlem sedan maj 2000360 inlägg
#4

ok

Medlem sedan maj 2000360 inlägg
#5

Detta blev lite smidigare och är nog mycket snabbare också..

function HE(strText)

strText = Server.HTMLEncode(strText & "")
mDelimit = Chr(0)
        Set re = New RegExp
        re.Global = True
        re.IgnoreCase = true
        re.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
        strText = re.Replace(strText, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")
        
        re.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:)(\S)(\S+)"
        strText = re.Replace(strText, "<a href=""$1$2" & mDelimit & "$3"">$2" & mDelimit & "$3</a>")
        
        re.Pattern = "(www\.(\S)(\S+))"
        strText = re.Replace(strText, "<a href=""http://$1"">$1</a>")
        
        strText = Replace(strText, mDelimit, "")

	HE = strText

end function

Ni får gärna komma med ideer och synpunkter på koden.. kan juh tilllägga att jag snott koden :) och gjort några småändringar så den passar mig..

Klarar den här koden alla farliga tecken? Kommer den vid några tillfällen att bugga?

Medlem sedan feb. 200112 078 inlägg
#6

Kommer den vid några tillfällen att bugga?

Testa, testa och testa. :)

Medlem sedan maj 2000360 inlägg
#7

Jag gjorde så här och det verkade fungera :)

Kan man få fler skumma tecken.. ?

for x = 1 to 255
hej = hej & chr(x)
next

hej = hej & " [url]www.altavista.com[/url]"

response.write HE(hej)
265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)