最近一段时间我用vb.net做论坛,在网上找了一下,虽然有关于ubb(vb.net)的转换代码,可是都不全面,我在这里补充了一下,拿出来和大家共享。
有什么问题到我个人的论坛 www.hushiyu.com 来交流,随时欢迎。
Public Class ubbs
function ubb(vstr as string)
'替换HTML标记及换行处理
vstr = replace(vstr, ">", ">")
vstr = replace(vstr, "<", "<")
vstr = Replace(vstr, CHR(32), " ")
vstr = Replace(vstr, CHR(9), " ")
vstr = Replace(vstr, CHR(34), """)
vstr = Replace(vstr, CHR(39), "'")
vstr = Replace(vstr, CHR(13), "")
vstr = Replace(vstr, CHR(10), "
1<br/>
")
vstr = Replace(vstr, "[enter]", "
1<br/>
")
dim xface as integer
if xface=1 then
'表情转换,数值型变量xface=1时,允许转换
vstr = replace(vstr,":)","
1<img em="" em1.gif""="" src=""/>
")
vstr = replace(vstr,":(","
1<img em="" em2.gif""="" src=""/>
")
vstr = replace(vstr,":o","
1<img em="" em3.gif""="" src=""/>
")
vstr = replace(vstr,":D","
1<img em="" em4.gif""="" src=""/>
")
vstr = replace(vstr,";)","
1<img em="" em5.gif""="" src=""/>
")
vstr = replace(vstr,":p","
1<img em="" em6.gif""="" src=""/>
")
vstr = replace(vstr,"🆒","
1<img em="" em7.gif""="" src=""/>
")
vstr = replace(vstr,":mad:","
1<img em="" em8.gif""="" src=""/>
")
vstr = replace(vstr,":eek:","
1<img em="" em9.gif""="" src=""/>
")
vstr = replace(vstr,":?:","
1<img em="" em0.gif""="" src=""/>
")
end if
dim objregex as RegEx
'屏蔽JS等等
objregex = new regex("javascript")
vstr = objregex.replace(vstr,"javascript")
objregex = new regex("jscript:")
vstr = objregex.replace(vstr,"jscript:")
objregex = new regex("js:")
vstr = objregex.replace(vstr,"js:")
objregex = new regex("value")
vstr = objregex.replace(vstr,"value")
objregex = new regex("about:")
vstr = objregex.replace(vstr,"about:")
objregex = new regex("file:")
vstr = objregex.replace(vstr,"file:")
objregex = new regex("document.cookie")
vstr = objregex.replace(vstr,"documents.cookie")
objregex = new regex("vbscript:")
vstr = objregex.replace(vstr,"vbscript:")
objregex = new regex("vbs:")
vstr = objregex.replace(vstr,"vbs:")
objregex = new regex("(on(mouse|exit|error|click|key))")
vstr = objregex.replace(vstr,"on$2")
objregex = new regex("script")
vstr = objregex.replace(vstr,"script")
'UBB转换
'url
objregex = new regex("(\[URL=(.[^\[])\])(.?)(\[/URL\])")
vstr = objregex.replace(vstr,"
1<a $2""="" href="" target="_blank">$3</a>
")
'EMAIL
objregex = new regex("\EMAIL\\[/EMAIL\]")
vstr = objregex.replace(vstr,"
1<a _blank""="" href="" mailto:$1""="" target="">$1</a>
")
'IMG
objregex = new regex("\IMG\://(.[^\[]*)\[/IMG\]")
vstr = objregex.replace(vstr,"
1<br/>
1<a $1:="" $2""="" href="" onfocus="this.blur()" target="_blank"><img $1:="" $2""="" alt="按此在新窗口浏览图片" border="0" javascript:if(this.width="" onload="" src=""/>screen.width-333)this.width=screen.width-333""></a>
")
'自动识别URL
objregex = new regex("\[url=(http://.^\[]*)\(\[/url\])")
vstr = objregex.replace(vstr,"
1<a $1""="" _blank""="" href="" target="">$2</a>
")
objregex = new regex("^(http://[A-Za-z0-9\./=?%\-&_~`@':+!]+)")
vstr = objregex.replace(vstr,"
1<a $1""="" _blank""="" href="" target="">$1</a>
")
objregex = new regex("(http://[A-Za-z0-9\./=?%\-&_~`@':+!]+)$")
vstr = objregex.replace(vstr,"
1<a href="$1" target="_blank">$1</a>
")
objregex = new regex("^>=""")
vstr = objregex.replace(vstr,"
1<a href="$1" target="_blank">$1</a>
")
'COLOR
objregex = new regex("\[color=(.^\[]*)\\[/color\]")
vstr = objregex.replace(vstr,"
1<font $1""="" color="">$2</font>
")
'u
objregex = new regex("\U\\[/U\]")
vstr = objregex.replace(vstr,"
1<u>$1</u>
")
'B
objregex = new regex("\B\\[/B\]")
vstr = objregex.replace(vstr,"
1<b>$1</b>
")
'I
objregex = new regex("\I\\[/I\]")
vstr = objregex.replace(vstr,"
1<i>$1</i>
")
'FLY
objregex = new regex("\fly\\[/fly\]")
vstr = objregex.replace(vstr,"
1<marquee 3""="" 80%""="" alternate""="" behavior="" scrollamount="" width="">$1</marquee>
")
'SHADOW
objregex = new regex("\SHADOW=([0-9]),(#[a-z0-9]),([0-9]*)\\[/SHADOW]")
vstr = objregex.replace(vstr,"
1<table filter:shadow(color="$2," strength='$3)""' style="" width="$1">$4</table>
")
'GLOW
objregex = new regex("\glow=([0-9]),(#[a-z0-9]),([0-9]*)\\[/glow]")
vstr = objregex.replace(vstr,"
1<table filter:glow(color="$2," strength='$3)""' style="" width="$1">$4</table>
")
'center
objregex = new regex("(\[center\])(.*?)(\[/center\])")
vstr = objregex.replace(vstr,"
1<center>$2</center>
")
'CODE
objregex = new regex("\code\\[/code\]")
vstr = objregex.replace(vstr,"
1<table #000000;font-size:9pt;font-family:tahoma""="" #99ffcc""="" 0""="" 2""="" 80%""="" bgcolor="" border="" border:1px="" cellpadding="" cellspacing="" solid="" style="" width=""><tr><td>$1</td></tr></table>
")
'FLASH
objregex = new regex("(\[falsh\])(.*?)(\[/falsh\])")
vstr = objregex.replace(vstr,"
1<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" height="400" width="500"><param $2""="" name="movie" value=""/><param name="quality" value="high"/><embed $2""="" height="400" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="" type="application/x-shockwave-flash" width="500"/>$2</object>
")
objregex = new regex("(\[falsh=([0-9]),([0-9])\])(.*?)(\[/falsh\])")
vstr = objregex.replace(vstr,"
1<a $4""="" href="" target="_blank"><img alt="点击开新窗口欣赏该FLASH动画!" border="0" src="pic/swf.gif"/> [全屏欣赏]</a>
1<br/>
1<br/>
1<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" height="$3" width="$2"><param $4""="" name="movie" value=""/><param name="quality" value="high"/><param name="menu" value="false"/><embed $4""="" height="$3" menu="false" pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high" src="" type="application/x-shockwave-flash" width="$2"/>$4</object>
")
'dir
objregex = new regex("\DIR=([0-9]),*([0-9]*)\\[/DIR]")
vstr = objregex.replace(vstr,"
1<object classid="clsid:166B1BCA-3F9C-11CF-8075-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0" height="$2" width="$1"><param name="src" value="$3"/><embed height="$2" pluginspage="http://www.macromedia.com/shockwave/download/" src="$3" width="$1"/></object>
")
'rm
objregex = new regex("\rm=([0-9]),*([0-9]*)\\[/rm]")
vstr = objregex.replace(vstr,"
1<object class="OBJECT" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" height="$2" id="RAOCX" width="$1"><param name="SRC" value="$3"/><param name="CONSOLE" value="Clip1"/><param name="CONTROLS" value="imagewindow"/><param name="AUTOSTART" value="true"/></object>
1<br/>
1<object classid="CLSID:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA" height="32" id="video2" width="$1"><param name="SRC" value="$3"/><param name="AUTOSTART" value="-1"/><param name="CONTROLS" value="controlpanel"/><param name="CONSOLE" value="Clip1"/></object>
")
'mp
objregex = new regex("\mp=([0-9]),*([0-9]*)\\[/mp]")
vstr = objregex.replace(vstr,"
1<object align="middle" class="OBJECT" classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" height="$2" id="MediaPlayer" width="$1"><param name="ShowStatusBar" value="-1"/><param name="Filename" value="$3"/><embed codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" flename="mp" height="$2" src="$3" type="application/x-oleobject" width="$1"/></object>
")
'qt
objregex = new regex("\qt=([0-9]),*([0-9]*)\\[/qt]")
vstr = objregex.replace(vstr,"
1<embed autoplay="true" bgcolor="#000000" cache="false" controller="true" height="$2" kioskmode="false" loop="false" playeveryframe="false" pluginspage="http://www.apple.com/quicktime/" scale="TOFIT" src="$3" targetcache="false" width="$1"/>
")
'QUOTE
objregex = new regex("(\[QUOTE\])(.*)(\[/QUOTE\])")
vstr = objregex.replace(vstr,"
1<table align="center" bgcolor="#F2F8FF" border="1" bordercolor="#000000" cellpadding="0" cellspacing="0" width="94%"><tr><td><table border="0" cellpadding="5" cellspacing="1" width="100%"><tr><td>$2</td></tr></table></td></tr></table>
1<br/>
")
'move
objregex = new regex("(\[move\])(.*)(\[/move\])")
vstr = objregex.replace(vstr,"
1<marquee scrollamount="3">$2</marquee>
")
'size
objregex = new regex("(\[size=1\])(.[^\[]*)(\[/size\])")
vstr = objregex.replace(vstr,"
1<font size="1">$2</font>
")
objregex = new regex("(\[size=2\])(.[^\[]*)(\[/size\])")
vstr = objregex.replace(vstr,"
1<font size="2">$2</font>
")
objregex = new regex("(\[size=3\])(.[^\[]*)(\[/size\])")
vstr = objregex.replace(vstr,"
1<font size="3">$2</font>
")
objregex = new regex("(\[size=4\])(.[^\[]*)(\[/size\])")
vstr = objregex.replace(vstr,"
1<font size="4">$2</font>
")
'face
objregex = new regex("(\[face=(.[^\[])\])(.[^\[])(\[/face\])")
vstr = objregex.replace(vstr,"
1<font face="$2">$3</font>
")
'em
objregex = new regex("(\[em(.[^\[]*)\])")
vstr = objregex.replace(vstr,"
1<img align="middle" border="0" src="pic\em$2.gif"/>
")
'完成,还可以自己扩展
ubb = vstr
end function
End Class