webForumDet fria alternativet

Replacekod

ASP

17 svar · 533 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Varför funkar ej denna så att <br> gör en radbrytning samt varför <hr> inte blir en linje? En till rad i loopen behövs va? Och hur skriver man den??

<%
strVippis = 1 

Function BlockUnAllowedHTML(ByVal sStr)
	Dim vAllowedHTML, i, objRegExp
	'Om användare är VIP
	if strVIPPIS = 1 Then
		vAllowedHTML = Array("b","u","br","fieldset","legend","hr","strong","code","font","span")
	else
		vAllowedHTML = Array("b","u","br")
	end if
	sStr = Server.HTMLEncode(sStr & "")
	
	Set objRegExp = New RegExp
	objRegExp.IgnoreCase = True
	objRegExp.Global = True
	
	For i = 0 To UBound(vAllowedHTML)
		objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ")&gt;([\s\S]*?)&lt;/(" & vAllowedHTML(i) & ")&gt;"
		sStr = objRegExp.Replace(sStr, "<$1>$2</$3>")

		objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ".*?)&gt;([\s\S]*?)&lt;/(" & vAllowedHTML(i) & ")&gt;"
		sStr = objRegExp.Replace(sStr, "<$1>$2</$3>")
	Next 'i
	
	Set objRegExp = Nothing
	BlockUnAllowedHTML = sStr
End Function

str = "Hej <font face=verdana size=1>HEJ</font><br>Hejsan"

Response.write BlockUnAllowedHTML(str)
%>
Medlem sedan dec. 20011 860 inlägg
#2

Jag la till denna rad i loopen :)

		objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ")&gt;"
		sStr = objRegExp.Replace(sStr, "<$1>")

Då funkade det :)

Medlem sedan dec. 20011 860 inlägg
#3

Men img koden fungerar inte. Om jag lägger </img> gör den det.

Sen vill jag att man skall kunna skriva " i koden utan felmeddelanden. (Funkar om man hämtar från databas.)

Medlem sedan juni 2004533 inlägg
#4

Du saknar den fjärde varianten. Du har:

<x>...</x>
<x...>...</x>
<x>

Men du saknar:

<x...>

Medlem sedan dec. 20011 860 inlägg
#5

Jaa, men hur skriver man den tro??

Medlem sedan juni 20019 519 inlägg
#6

Ska både VIP och vanliga användare kunna användar IMG

Medlem sedan dec. 20011 860 inlägg
#7

Jepp, det skall dom kunna! Så har jag iallafall idag!

Medlem sedan jan. 2003438 inlägg
#8

Lägg till denna:

		objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ".*?)&gt;"
		sStr = objRegExp.Replace(sStr, "<$1>")
Medlem sedan dec. 20011 860 inlägg
#9

Tackar för det. Funkade fint :)

Medlem sedan dec. 20011 860 inlägg
#10

Hela koden:

Function FixedCode(ByVal sStr,strVippis)
Dim vAllowedHTML, i, objRegExp
'Om användare är VIP
if strVippis = 1 Then
vAllowedHTML = Array("b","u","i","br","fieldset","legend","hr","strong","fo nt","span","a","div","img","h1","h2","h3","h4","big","table" ,"tr","td")
else
vAllowedHTML = Array("b","u","i","br","hr","font","a","img","h1","h2","h3", "h4","big")
end if
sStr = Server.HTMLEncode(sStr & "")
sStr = Replace(sStr,vbCrLf, "<br>")

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

For i = 0 To UBound(vAllowedHTML)
objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ")&gt;([\s\S]*?)&lt;/(" & vAllowedHTML(i) & ")&gt;"
sStr = objRegExp.Replace(sStr, "<$1>$2</$3>")

objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ".*?)&gt;([\s\S]*?)&lt;/(" & vAllowedHTML(i) & ")&gt;"
sStr = objRegExp.Replace(sStr, "<$1>$2</$3>")

objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ")&gt;"
sStr = objRegExp.Replace(sStr, "<$1>")

objRegExp.Pattern = "&lt;(" & vAllowedHTML(i) & ".*?)&gt;"
sStr = objRegExp.Replace(sStr, "<$1>")
Next 'i

Set objRegExp = Nothing
FixedCode = sStr
End Function
Medlem sedan dec. 20011 860 inlägg
#11

Men man verkar inte kunna använda " taggen! Nån som vet varför?

Medlem sedan juni 2004533 inlägg
#12

Asa skrev:

" taggen

Vad menar du?

Vad du nu är, varför verkar det så? Symptom? Får du något felmeddelande?

Medlem sedan dec. 20011 860 inlägg
#13

När man skriver ex en länk så här <a href="http://www.sidan2.se">TEST</a> så blir inte länken rätt utan det blir ex http://www.sidan.se/"http://www.sidan2.se"

Sen vid ex font color så blir det fel färg. Skriver jag <font color="red"> visas den som grön. Utan " taggarna funkar det utan problem.

Vill att det skall funka vilket sätt man än skriver på.

Medlem sedan juni 2004533 inlägg
#14

Aha. Det beror på att citattecknen är html-kodade till &quot;. Koden du får ut blir alltså:

<a href=&quot;http://www.sidan2.se&amp;quot;>TEST</a>

Du får konvertera tillbaka även det som matchas av den första parentesen.

Medlem sedan dec. 20011 860 inlägg
#15

Okej, skall se om jag kan fixa det. Tackar för svaret.

Medlem sedan sep. 2003448 inlägg
#16

Asa skrev:

Okej, skall se om jag kan fixa det. Tackar för svaret.

Om du nu inte fått stil på det så kan du byta:

sStr = objRegExp.Replace(sStr, "<$1>$2</$3>")

mot

sStr = replace(objRegExp.Replace(sStr,"<$1>$2</$1>"),"& quot;","""")

Tror att det ska fungera. ta bort mellanrummet mellan & qout;

Medlem sedan dec. 20011 860 inlägg
#17

Tackar, skall testa!

Medlem sedan dec. 20011 860 inlägg
#18

Man fick lägga replacekoden vid denna:

FixedCode = replace(sStr,""","""")

Då funkade det fint

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)