M Melea Medlem sedan juli 2003 3 147 inlägg Frågan 7 okt. 2003 10:28 #1 Hejsan!
har sökt och letat i forumet men inte hittat hur man gör en funktion som tar bort alla < och > taggar som finns innanför [ kod] och [ /kod] taggarna. någon vänlig själ som vill hjälpa mig med detta?
mvh
Re: Regexp fråga
Melea skrev:
Hejsan!
har sökt och letat i forumet men inte hittat hur man gör en funktion som tar bort alla < och > taggar som finns innanför [ kod] och [ /kod] taggarna. någon vänlig själ som vill hjälpa mig med detta?
mvh
alltså tar bort dem helt eller bara gör om dem med Server.HtmlEncode??
I sådana fall:
Function Konvert(svalue)
Dim RegExp
Set RegExp = New RegExp
With RegExp
.Global = True
.IgnoreCase = True
.Pattern = "\[kod\](*.?)[/kod\]"
End With
Konvert = RegExp.Replace(svalue,Server.HTMLEncode("$1"))
End function
Kanske?? :q
M Melea Medlem sedan juli 2003 3 147 inlägg skulle helst vilja replace'a dem med < och > eftersom jag har annan sorts kod på sidan också.
mvh
Melea skrev:
skulle helst vilja replace'a dem med < och > eftersom jag har annan sorts kod på sidan också.
mvh
det är vad Server.HTMLEncode gör, den ersätter < > med < >, dvs säga så att inga HTML-taggar kan förstöra din kodning!
M Melea Medlem sedan juli 2003 3 147 inlägg Hm får felmeddelandet:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A139A)
Oväntad kvantifierare
Såhär ser koden ut:
<%
Function textEncode(str)
str = Replace(str, "'","''")
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[kod\](*.?)[/kod\]"
str = objRegExp.Replace(str,Server.HTMLEncode("$1"))
textEncode = str
End function
%>
Tacksam för svar
Mvh
Blubber... testa och ändra till (.*) istället för frågetecknet! :OO
M Melea Medlem sedan juli 2003 3 147 inlägg Hm...
Feltyp:
Körningsfel i Microsoft VBScript (0x800A139B)
Förväntade "]" i reguljärt uttryck
:OO
Engine^ Medlem sedan dec. 2000 3 887 inlägg Du har bara råkat missa en backslash...
objRegExp.Pattern = "\[kod\](*.)\[/kod\]"
M Melea Medlem sedan juli 2003 3 147 inlägg :OO
Konstigt nog får jag fortfarande:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A139A)
Oväntad kvantifierare
på samma rad som:
objRegExp.Pattern = "\[kod\](*.)\[/kod\]"
Melea skrev:
:OO
Konstigt nog får jag fortfarande:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A139A)
Oväntad kvantifierare
Vilken version på scriptmotorn har du?
Engine^ Medlem sedan dec. 2000 3 887 inlägg Oj... punkten ska ju vara före stjärnan... :)
objRegExp.Pattern = "\[kod\](.*)\[/kod\]"
M Melea Medlem sedan juli 2003 3 147 inlägg Om du menar webservern så har jag Windows XP IIS5.
Jag fick igång det genom:
<%
Function textEncode(str)
str = Replace(str, "'","''")
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.pattern = "\[kod\]((.|\n)+?)\[/kod\]"
str = objRegExp.Replace(str,Server.HTMLEncode("$1"))
textEncode = str
End function
%>
/Red Det var inget :OO
Det jag menade var vilken version har du på Microsoft Script Motor, vissa regexp brukar inte funka i ex. 5.1
Dvs, då får du reda på script motor..
<%
response.write scriptenginemajorversion & "." & Scriptengineminorversion
%>
Men annars mönster
\[kod\](*.?)\[/kod\]
Bör väl funka??
M Melea Medlem sedan juli 2003 3 147 inlägg Har version 5.6...
Men nu får ni ursäkta min dumhet :)
Står alldeles still i huvet på mig, får inte saken att fungera...
När jag includerar
<%
Function textEncode(str)
str = Replace(str, "'","''")
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[kod\](.*)\[/kod\]"
str = objRegExp.Replace(str,Server.HTMLEncode("$1"))
textEncode = str
End function
%>
högst upp på t.ex. kurs_add.asp och kör koden i kurs_add.asp som ser ut såhär:
<!-- #include file="funktioner.asp" -->
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("../db/aspkurs.mdb")
dim strkursnamn, strkategori, strkurs
strkursnamn = Request.Form("kursnamn")
strkategori = Request.Form("kategori")
strkurs = textEncode(Request.Form("kurs"))
sql = " insert into aspkurs(kursnamn, kategori, kurs) " & " values('" & strkursnamn & "','" & strkategori & "','" & strkurs & "') "
Conn.Execute sql,,128
Conn.Close
Set Conn = Nothing
Response.Redirect "../admin.asp?visa=inloggad&kurser=kurs_add&add=kurs"
%>
så händer det ingenting? [ kod] - taggarna står kvar och allt som står där innanför visas inte på kurs.asp där jag skriver ut det genom
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("db/aspkurs.mdb")
SQL = "Select * From aspkurs where ID = " & Request.Querystring("kursID") & " "
Set RecSet = Conn.Execute(SQL)
%>
<%=Replace(RecSet("kurs"),vbCrLf,"<br>")%>
<%
Conn.Close
Set Conn = Nothing
Set RecSet = Nothing
%>
Vad gör jag för fel? :OO
Tack på förhand!
Mvh
M Melea Medlem sedan juli 2003 3 147 inlägg Ingen? *känner mig dum* :OO
Vad händer om du flyttar TextEncode från innan inläggningen i databasen till efter när du skriver ut!
<%=TextEncode(Replace(RecSet("kurs"),vbCrLf,"<br>"))%>
:q
M Melea Medlem sedan juli 2003 3 147 inlägg Ingenting, det ända som skrivs ut är [ kod] - taggarna och inte koden mellan taggarna...
<%
Function textEncode(str)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[kod\](.*)\[/kod\]"
str = objRegExp.Replace(str,Server.HTMLEncode("$1"))
str = Replace(str, vbcrlf, "<BR>" & vbcrlf)
textEncode = str
End function
%>
M Melea Medlem sedan juli 2003 3 147 inlägg Hm! Fått lite klarhet i det nu ändå men problemet kvarstår.
Jag använder koden när jag hämtar datan från databasen och den ser ut såhär:
<%
Function textEncode(str)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[kod\]([^\[]*)\[/kod\]"
str = objRegExp.Replace(str, "[ kod]" & Server.HTMLEncode("$1") & "[ /kod]")
str = Replace(str, vbcrlf, "<BR>" & vbcrlf)
textEncode = str
End function
%>
Problemet är att när jag använder koden skriver den bara ut [ kod] och [ /kod] - taggarna, inte innehållet däri.
Står det fel i koden någonstans?
Mvh
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jo, innehållet skrivs visst ut, om du kollar i källan! ;)
Det är bara det att Server.HTMLEncode() inte verkar vilja funka.
M Melea Medlem sedan juli 2003 3 147 inlägg Precis! Helskumt :OO
Har testat koden på Loopias webserver nu också men det gör ingen skillnad...