webForumDet fria alternativet

Kan någon kolla om min RegExp kod ser ok ut?

ASP

6 svar · 191 visningar · startad av KoTTeN

Medlem sedan sep. 20011 722 inlägg
Frågan#1

Hallå! Jag har testat lite med regexp. Denna kod har jag fått fram:

Function Regular(strText)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true

objRegExp.Pattern = "\[list\]((.|\s)*?)\[/list\]"
strText = objRegExp.Replace(strText,"<UL>$1</UL>") 

objRegExp.Pattern = "(\[\*\])"
strText = objRegExp.Replace(strText,"<LI>") 

objRegExp.Pattern = "\[url=(.*?)\]((.&#0124;\s)*?)\[\/url\]"
strText = objRegExp.Replace(strText,"<B><A HREF=""$1"">$2</A></B>") 

objRegExp.Pattern = "\[b\]((.&#0124;\s)*?)\[/b\]"
strText = objRegExp.Replace(strText,"<B>$1</B>")
objRegExp.Pattern = "\[i\]((.&#0124;\s)*?)\[/i\]"
strText = objRegExp.Replace(strText,"<I>$1</I>")

objRegExp.Pattern = "\[table\]((.&#0124;\s)*?)\[/table\]"
strText = objRegExp.Replace(strText,"<TABLE WIDTH=""100%"" BORDER=""2"" CELLSPACING=""0"" CELLPADDING=""0"">$1</TABLE>") 
objRegExp.Pattern = "\[tr\]((.&#0124;\s)*?)\[/tr\]"
strText = objRegExp.Replace(strText,"<TR>$1</TR>") 
objRegExp.Pattern = "\[td(.*?)\]((.&#0124;\s)*?)\[/td\]"
strText = objRegExp.Replace(strText,"<TD$1><FONT CLASS=""s"">$2</FONT></TD>") 

objRegExp.Pattern = "\[citat\]((.&#0124;\s)*?)\[/citat\]"
strText = objRegExp.Replace(strText,"<BLOCKQUOTE><I>$1</I></BLOCKQUOTE>") 

objRegExp.Pattern = "\[img\]((.&#0124;\s)*?)\[/img\]"
strText = objRegExp.Replace(strText,"<IMG SRC=""$1"">") 

strText = Replace(strText, vbcrlf, "<BR>" & vbcrlf) 

Regular=strText
End Function

Detta är det första jag gör i regexp, men konstigt nog kom det inga felmedelanden. Brukar alltid komma upp sjuttielva fel annars.
Men något skumt fel måste de ju finnas. Kan någon vänlig person som inte har något särskilt för sig kolla igenom om det ser ok ut? Vad som kan göras bättre och vad som ä så innehelvetes fel? Vore toppen i så fal!

Och så en sak till, om jag vill ha denna funktion på ett tio tal sidor, ska jag då lägga in den i en Include fil som jag inkluderar högst upp på varje som jag vill ha den i?

------------------
// Ronny "KoTTeN" Andersson

Medlem sedan dec. 19998 577 inlägg
#2

Är det något som inte funkar?

Och så en sak till, om jag vill ha denna funktion på ett tio tal sidor, ska jag då lägga in den i en Include fil som jag inkluderar högst upp på varje som jag vill ha den i?

Absolut... du skall inte göra på något annat sätt (om du inte vill hålla på med komponenter eller scriptlets). ;)

------------------
Mostly Harmless

Medlem sedan sep. 20011 722 inlägg
#3

Nej allt funkar! Jag bara har en sån där äcklig känsla av att det är någonting som kan göras bättre...

------------------
// Ronny "KoTTeN" Andersson

Medlem sedan juni 20019 024 inlägg
#4

Nu jag inte så jättehaj på RegExp, men borde man inte kunna göra en funktion av det (om man dimmar objRegExp & strText globalt):

Sub RegExpressa(strPattern, strString)
 &nbsp; &nbsp; objRegExp.Pattern = strPattern
 &nbsp; &nbsp; strText = objRegExp.Replace(strText, strString)
End Sub

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan sep. 20011 722 inlägg
#5

Nä jag är inte heller jättehaj på RegExp, så kan du förklara mer? :)

------------------
// Ronny "KoTTeN" Andersson

[Redigerat av KoTTeN den 27 jan 2002]

Medlem sedan dec. 19998 577 inlägg
#6

Det handlar inte om regexp utan om funktioner... :)

Du skapar en funktion för att exekvera ditt pattern så slipper du skriva den koden varje gång, exempel:

dim objRegExp 
Function Regular(strText)
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true

[b]strText = RegExpressa("\[list\]((.&#0124;\s)*?)\[/list\]", "<UL>$1</UL>")[/b]

strText = Replace(strText, vbcrlf, "<BR>" & vbcrlf) 

Regular=strText
End Function

Sub RegExpressa(strPattern, strString)
    objRegExp.Pattern = strPattern
    strText = objRegExp.Replace(strText, strString)
End Sub

------------------
Mostly Harmless

[Redigerat av Vide den 27 jan 2002]

Medlem sedan sep. 20011 722 inlägg
#7

aha ok! De testar vi!

------------------
// Ronny "KoTTeN" Andersson

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