webForumDet fria alternativet

Replacekod

17 svar · 531 visningar · startad av Asa

AsaMedlem sedan dec. 20011 934 inlägg
#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)
%>
AsaMedlem sedan dec. 20011 934 inlägg
#2

Jag la till denna rad i loopen :)

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

Då funkade det :)

AsaMedlem sedan dec. 20011 934 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.)

GuffaMedlem sedan juni 2004533 inlägg
#4

Du saknar den fjärde varianten. Du har:

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

Men du saknar:

<x...>

AsaMedlem sedan dec. 20011 934 inlägg
#5

Jaa, men hur skriver man den tro??

voigtann1Medlem sedan juni 20018 810 inlägg
#6

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

AsaMedlem sedan dec. 20011 934 inlägg
#7

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

SannyWMedlem sedan jan. 2003447 inlägg
#8

Lägg till denna:

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

Tackar för det. Funkade fint :)

AsaMedlem sedan dec. 20011 934 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
AsaMedlem sedan dec. 20011 934 inlägg
#11

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

GuffaMedlem 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?

AsaMedlem sedan dec. 20011 934 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å.

GuffaMedlem 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.

AsaMedlem sedan dec. 20011 934 inlägg
#15

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

MelittaMedlem sedan sep. 2003577 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;

AsaMedlem sedan dec. 20011 934 inlägg
#17

Tackar, skall testa!

AsaMedlem sedan dec. 20011 934 inlägg
#18

Man fick lägga replacekoden vid denna:

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

Då funkade det fint

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb