webForumDet fria alternativet

RegExp på B-one

ASP

5 svar · 365 visningar · startad av webbSAJTEN

Medlem sedan jan. 2002992 inlägg
Frågan#1

Tjenare alla :D
Det är såhär att jag skulle vilja att spärra all HTML-kod och bara använda s.k. Forumkod.. Alltså bold och sådär..

En polare till mig har gjort ett sånt script och det funkar kanon, den sidan ligger på aleborg..
Men min sida ligger på B-one..

Nu är de så all text har försvunnit, istället för att visas som det skall göra..

Är det någon idé att jag skriver med en massa kod, eller är det så att B-one har svårt med RegExp? Har läst det någonstans..

Medlem sedan juni 200032 967 inlägg
#2

b-one är ett skräphotell som inte använder Windows-servrar. Ska man köra asp så ska man göra det på Windows / IIS, annars får man räkna med att det finns saker som inte fungerar som det ska. RegExp kan helt klart vara en sådan sak.

Sen kan det ju vara en idé att visa kod och felmeddelande om någon har förslag på alternativ.

Medlem sedan jan. 2002992 inlägg
#3

okej :(
Får se till så att sidan flyttas då :P

jag har kommit såhär långt..

<%
strText = RS("strinlagg")
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[b\](.*?)\[/b\]"
strText = objRegExp.Replace(strText,"<b>$1</b>")

Response.write strText
%>

Skulle nu vilja få me radbrytningar, så att dom kommer me också..
Replace(Server.HTMLEncode(strText), vbCrlf, "<br>")
Den förstör alla replace..

Hur ska jag göra de?

Medlem sedan juli 200543 inlägg
#4

webbSAJTEN skrev:

okej :(
Får se till så att sidan flyttas då :P

jag har kommit såhär långt..

<%
strText = RS("strinlagg")
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "\[b\](.*?)\[/b\]"
strText = objRegExp.Replace(strText,"<b>$1</b>")

Response.write strText
%>

Skulle nu vilja få me radbrytningar, så att dom kommer me också..
Replace(Server.HTMLEncode(strText), vbCrlf, "<br>")
Den förstör alla replace..

Hur ska jag göra de?

Du behöver albsolut inte byta om du inte vill.
B-One använder Suns ASP.
Det stödjer inte RegExp.
Som @nders sa..

Men om du ska ha text så kan du använda enkla replace..

Variabel = Replace(Variabel,"[b]","<b>")
Variabel = Replace(Variabel,"[B]","<b>")

Annars kan du använda en function som skapar en array och loopar igenom hela arrayen som byter..

function bytmedarr(kod,byt,bytmed)

Dim Str,change,changewith,strarr,bytarr,i

Str = kod
change = byt
changewith = bytmed

arr = Split(change,",")
bytarr = Split(changewith,",")

for i = 0 to UBound(arr) step 1

Str = Replace(Str,lcase(arr(i)),bytarr(i))
Str = Replace(Str,UCase(arr(i)),bytarr(i))

Next

bytmedarr = Str

End Function

För att anropa:

Response.write(bytmedarr(RecSet("falt"),"[b]","<b>"))

Och med flera värden

Response.write(bytmedarr(RecSet("falt"),"[b],[i]","<b>,<i>"))

Men om du har t.ex byt [br] med <br> och användaren skriver [Br] då funkar det inte.
Det funkar bara med [BR] och [br].
Alltså ucase och lcase !

Lycka till !

Medlem sedan jan. 2002992 inlägg
#5

Nu har jag allt som funkar..
Men nu vill jag bara att radbrytningarna skall visas också så att all text inte kommer på en och samma rad...

Medlem sedan juli 200543 inlägg
#6

DinText = Replace(DinText,VbCrLf,"<br />")

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