当前位置: 首页 > 图文教程 > 网络编程 > 正则表达式 > UBB 转换函数演示 (经典论坛)

正则表达式
RegExp对象的方法和属性
asp正则过滤重复字符串的代码
用Javascript正则实现url链接的解析类
正则表达式匹配 非XXX的行
正则表达式不包含属性
ASP正则函数替换分页后的参数
asp match正则函数使用Matchs实例
java正则表达式彻底研究
比较实用的正则表达式学习笔记
asp只采集网站可见文本的正则
asp.net常用正则表达式
js验证email的正则
java正则表达式验证函数
java 字符串匹配函数
js取得参数代码
Further Study of Rugular Expresions
正则表达式之全部符号对照表
正则文本框只能输入正整数
正则表达式在线测试工具
正则表达式提取网址、标题、图片等一例(.Net Asp Javascript/Js)的实现

正则表达式 中的 UBB 转换函数演示 (经典论坛)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 47 ::
收藏到网摘: n/a

UBB代码对于经常上论坛的朋友来说是最熟悉不过了。这里我不多说了,关于怎么实现UBB转换,不了解的朋友请看这里正则表达式在UBB论坛中的应用

经典论坛的UBB转换我觉得是处理的非常好的,研究了一下它的转换结果[因为没有源码:)],做了下面的演示。转换结果基本上觉得象了。

主要是针对{code}{html}这两个标签的处理,其他的UBB标签还是一般的处理方法。

下面是分别用javascript和vbscript实现的演示。自己做论坛的朋友,如果想实现类似经典论坛的运行代码框可以看看这种转换。

欢迎大家输入尽量多格式的UBB进行测试,多多指出错误。
javascirpt:

复制代码 代码如下:

<style>
.CodeSamp {
PADDING-RIGHT: 0.5em; MARGIN-TOP: 1em; PADDING-LEFT: 0.5em; FONT-SIZE: 8p; MARGIN-BOTTOM: 1em; PADDING-BOTTOM: 0.5em; MARGIN-LEFT: 0pt; PADDING-TOP: 0.5em; FONT-FAMILY: "Courier New"; BACKGROUND-COLOR: #eeeeee;width: 480px;overflow:hidden;border: 1px solid #888888;
}
textarea {
border-width: 1; border-color: #000000;font-size: 12px;FONT-FAMILY: "Tahoma", "MS Shell Dlg";
}
</style>

<TEXTAREA name=phx cols=65 rows=12>
[i][b][color=blue]blue[/color][/b][/i]

{html}[color=red]te
st[/color]{/html}

{html}{code}te
st{/code}{/html}

{code}{html}te
st{/html}{/code}</textarea>
<br><button onclick=show.innerHTML=UBBCode(phx.value,"html")>转换</button><br>
<div id=show style="border:1 solid skyblue;width=500;font-size: 12px;FONT-FAMILY:
'Tahoma', 'MS Shell Dlg';
"></div>


<script>
strIcons = "1" //允许笑脸转换
strSmile="1" //同上
ImgName="em"
picurl="pic/"

function UBBCode(content,html){
st=new Date().getTime()
content=content.replace(/\[(\/)?phx_code\]/ig,"{$1phx_code}");
content=content.replace(/\[(\/)?phx_html\]/ig,"{$1phx_html}");
content="[phx_code]"+content+"[/phx_code]";
content=content.replace(/(\[code\]([\s\S]+?)\[\/code\])/ig,"[/phx_code]$1[phx_code]");
content=content.replace(/\[phx_code\]([\s\S]*?)\[\/phx_code\]/ig,function($1,$2){if(html=="html"){return(HTMLCode($2));}else{return(trans($2));}});
content=content.replace(/\[code\](\r\n)?([\s\S]+?)\[\/code\]/ig,function($1,$2,$3){return("<PRE class=CodeSamp>"+DvbbsHtmlAn($3)+"</PRE>")});
content=content.replace(/\{(\/)?phx_code\}/ig,"[$1phx_code]");
content=content.replace(/\{(\/)?phx_html\}/ig,"[$1phx_html]");
alert('共耗时 '+eval(new Date().getTime()-st)+' ms');
return(content);
}

function HTMLCode(content){
content="[phx_html]"+content+"[/phx_html]";
content=content.replace(/(\[html\]([\s\S]+?)\[\/html\])/ig,"[/phx_html]$1[phx_html]");
content=content.replace(/\[phx_html\]([\s\S]*?)\[\/phx_html\]/ig,function($1,$2){return(trans($2))});
content=content.replace(/\[html\]([\s\S]+?)\[\/html\]/ig,function($1,$2){return("<span><TEXTAREA cols=95 rows=12>"+hencode($2)+"</TEXTAREA><br><INPUT onclick=runCode() type=button value=运行代码>[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]</span>")});
return(content);
}

function hencode(fString){ //简单模拟server.htmlencode ASP中不用这个
fString = fString.replace(/&/ig,"&")
fString = fString.replace(/>/ig,">") //>
fString = fString.replace(/</ig,"<") //<
return fString;
}

function DvbbsHtmlAn(fString){

if(fString=="")return("");

fString=hencode(fString)

fString = fString.replace(/\t/ig," ") //Tab
fString = fString.replace(/"/ig,""") //"
fString = fString.replace(/'/ig,"'") //'
fString = fString.replace(/\r/ig,"") //回车是一个13+10
fString = fString.replace(/\n\n/ig,"<P>") //
fString = fString.replace(/\n/ig,"<BR>") //换行
fString = fString.replace(/\x20/ig," ") //空格


return(fString);
}

function trans(strContent){
var re;
strContent=DvbbsHtmlAn(strContent);
re=/\[IMG\](.+?)\[\/IMG\]/ig;
strContent=strContent.replace(re,"<a href=$1 target=_blank><IMG SRC=$1 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\" galleryImg=no></a>");
re=/\[DIR=*([0-9]*),*([0-9]*)\](.*?)\[\/DIR]/ig
strContent=strContent.replace(re,"<object classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0 width=$1 height=$2><param name=src value=$3><embed src=$3 pluginspage=http://www.macromedia.com/shockwave/download/ width=$1 height=$2></embed></object>")
re=/\[QT=*([0-9]*),*([0-9]*)\](.*?)\[\/QT]/ig
strContent=strContent.replace(re,"<embed src=$3 width=$1 height=$2 autoplay=true loop=false controller=true playeveryframe=false cache=false scale=TOFIT bgcolor=#000000 kioskmode=false targetcache=false pluginspage=http://www.apple.com/quicktime/>")
re=/\[MP=*([0-9]*),*([0-9]*)\](.*?)\[\/MP]/ig
strContent=strContent.replace(re,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=$1 height=$2 ><param name=ShowStatusBar value=-1><param name=Filename value=$3><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=$3 width=$1 height=$2></embed></object>")
re=/\[RM=*([0-9]*),*([0-9]*)\](.*?)\[\/RM]/ig
strContent=strContent.replace(re,"<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=$1 height=$2><PARAM NAME=SRC VALUE=$3><PARAM NAME=CONSOLE VALUE=Clip1><PARAM NAME=CONTROLS VALUE=imagewindow><PARAM NAME=AUTOSTART VALUE=true></OBJECT><br><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>")


re=/(\[FLASH\])(.*?)(\[\/FLASH\])/ig
strContent= strContent.replace(re,"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=$2><PARAM NAME=quality VALUE=high><embed src=$2 quality=high pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=500 height=400>$2</embed></OBJECT>")
re=/(\[FLASH=*([0-9]*),*([0-9]*)\])(.*?)(\[\/FLASH\])/ig
strContent= strContent.replace(re,"<a href=$4 TARGET=_blank><IMG SRC=pic/swf.gif border=0 alt=点击开新窗口欣赏该FLASH动画!> [全屏欣赏]</a><br><br><OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=$2 height=$3><PARAM NAME=movie VALUE=$4><PARAM NAME=quality VALUE=high><param name=menu value=false><embed src=$4 quality=high menu=false pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=$2 height=$3>$4</embed></OBJECT>")

re=/(\[UPLOAD=gif\])(.*?)(\[\/UPLOAD\])/ig
strContent= strContent.replace(re,"<br><IMG SRC="+picurl+"gif.gif border=0>此主题相关图片如下:<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")
re=/(\[UPLOAD=jpg\])(.*?)(\[\/UPLOAD\])/ig
strContent= strContent.replace(re,"<br><IMG SRC="+picurl+"jpg.gif border=0>此主题相关图片如下:<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")
re=/(\[UPLOAD=bmp\])(.*?)(\[\/UPLOAD\])/ig
strContent= strContent.replace(re,"<br><IMG SRC="+picurl+"bmp.gif border=0>此主题相关图片如下:<br><A HREF=$2 TARGET=_blank><IMG SRC=$2 border=0 alt=按此在新窗口浏览图片 onload=\"javascript:if(this.width>screen.width-333)this.width=screen.width-333\"></A>")

re=/(\[UPLOAD=(.[^\[]*)\])(.*?)(\[\/UPLOAD\])/ig
strContent= strContent.replace(re,"<br><IMG SRC="+picurl+"$2.gif border=0> <a href=$3>点击浏览该文件</a>")

re=/(\[URL\])(.*?)(\[\/URL\])/ig
strContent= strContent.replace(re,"<A HREF=$2 TARGET=_blank>$2</A>")
re=/(\[URL=(.[^\[]*)\])(.*?)(\[\/URL\])/ig
strContent= strContent.replace(re,"<A HREF=$2 TARGET=_blank>$3</A>")

re=/(\[EMAIL\])(.*?)(\[\/EMAIL\])/ig
strContent= strContent.replace(re,"<img align=absmiddle src=pic/email1.gif><A HREF=\"mailto:$2\">$2</A>")
re=/(\[EMAIL=(.[^\[]*)\])(.*?)(\[\/EMAIL\])/ig
strContent= strContent.replace(re,"<img align=absmiddle src=pic/email1.gif><A HREF=\"mailto:$2\" TARGET=_blank>$3</A>")

re =/^(http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/(http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/[^>=""](http:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/^(ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/(ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/[^>=""](ftp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/^(rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/(rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/[^>=""](rtsp:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/^(mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/(mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)$/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re =/[^>=""](mms:\/\/[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)/ig
strContent = strContent.replace(re,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")

if(strIcons == "1"){ //笑脸转换
re=/(\[em(.*?)\])/ig
strContent=strContent.replace(re,"<img src="+picurl+ImgName+"$2.gif border=0 align=middle>")
}

if(strSmile == "1"){ //笑脸转换
re=/(\[s(\d{1,2})\])/ig
strContent=strContent.replace(re,"<img src=smile/face$2.gif border=0 align=middle>")
}

re=/(\[color=(.[^\[]*)\])(.*?)(\[\/color\])/ig
strContent=strContent.replace(re,"<font color=$2>$3</font>")
re=/(\[face=(.[^\[]*)\])(.*?)(\[\/face\])/ig
strContent=strContent.replace(re,"<font face=$2>$3</font>")
re=/(\[align=(.[^\[]*)\])(.*?)(\[\/align\])/ig
strContent=strContent.replace(re,"<div align=$2>$3</div>")
//循环转换quote
re=/(\[QUOTE\])(.*?)(\[\/QUOTE\])/ig
while(strContent.indexOf("[quote]")>0 && strContent.indexOf("[/quote] ")>0){
strContent=strContent.replace(re,"<blockquote>引用:<hr><span>$2</span><hr></blockquote>")
}
re=/(\[fly\])(.*?)(\[\/fly\])/ig
strContent=strContent.replace(re,"<marquee width=90% behavior=alternate scrollamount=3>$2</marquee>")
re=/(\[move\])(.*?)(\[\/move\])/ig
strContent=strContent.replace(re,"<MARQUEE scrollamount=3>$2</marquee>")
re=/\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/GLOW]/ig
strContent=strContent.replace(re,"<table width=$1 style=\"filter:glow(color=$2, strength=$3)\">$4</table>")
re=/\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/SHADOW]/ig
strContent=strContent.replace(re,"<table width=$1 style=\"filter:shadow(color=$2, strength=$3)\">$4</table>")

re=/(\[i\])(.*?)(\[\/i\])/ig
strContent=strContent.replace(re,"<i>$2</i>")
re=/(\[u\])(.*?)(\[\/u\])/ig
strContent=strContent.replace(re,"<u>$2</u>")
re=/(\[b\])(.*?)(\[\/b\])/ig
strContent=strContent.replace(re,"<b>$2</b>")

re=/(\[size=1\])(.*?)(\[\/size\])/ig
strContent=strContent.replace(re,"<font size=1>$2</font>")
re=/(\[size=2\])(.*?)(\[\/size\])/ig
strContent=strContent.replace(re,"<font size=2>$2</font>")
re=/(\[size=3\])(.*?)(\[\/size\])/ig
strContent=strContent.replace(re,"<font size=5>$2</font>")
re=/(\[size=4\])(.*?)(\[\/size\])/ig
strContent=strContent.replace(re,"<font size=6>$2</font>")
re=/\[size=([+|-]?[0-7])\](.*?)(\[\/size\])/ig
strContent=strContent.replace(re,"<font size=$1>$2</font>")
re=/(\[list\])(.+?)(\[\/list\])/ig;
strContent=strContent.replace(re,"<UL TYPE=SQUARE>$2<\/UL>");
re=/(\[list=)(A|1)(\])(.+?)(\[\/list\])/ig;
strContent=strContent.replace(re,"<OL TYPE=$2>$4<\/OL>");
re=/(\[\*\])/ig;
strContent=strContent.replace(re,"<LI>");

re=/(\[center\])(.*?)(\[\/center\])/ig
strContent=strContent.replace(re,"<center>$2</center>")

re=/(\[table=(#*[a-z0-9]*),(#*[a-z0-9]*),(#*[a-z0-9]*)\])(.*?)(\[\/table\])/ig
strContent=strContent.replace(re,"<table border=0 cellpadding=5 cellspacing=1 bgcolor=$2><tr><td bgcolor=$3><font color=$4>$5</font></td></tr></table>")

return(strContent);
}
</script>



vbscript:
复制代码 代码如下:

<style>
.CodeSamp {
PADDING-RIGHT: 0.5em; MARGIN-TOP: 1em; PADDING-LEFT: 0.5em; FONT-SIZE: 8p; MARGIN-BOTTOM: 1em; PADDING-BOTTOM: 0.5em; MARGIN-LEFT: 0pt; PADDING-TOP: 0.5em; FONT-FAMILY: "Courier New"; BACKGROUND-COLOR: #eeeeee;width: 480px;overflow:hidden;border: 1px solid #888888;
}
textarea {
border-width: 1; border-color: #000000;font-size: 12px;FONT-FAMILY: "Tahoma", "MS Shell Dlg";
}
</style>

<TEXTAREA name=phx cols=65 rows=12>
[i][b][color=blue]blue[/color][/b][/i]

{html}[color=red]te
st[/color]{/html}

{html}{code}te
st{/code}{/html}

{code}{html}te
st{/html}{/code}</textarea>
<br><button onclick=show.innerHTML=UBBCode(phx.value)>转换</button><br>
<div id=show style="border:1 solid skyblue;width=500;font-size: 12px;FONT-FAMILY:
'Tahoma', 'MS Shell Dlg';
"></div>


<script language=vbs>
strIcons = "1" '允许笑脸转换
strSmile="1" '同上
ImgName="em"
picurl="pic/"

function UBBCode(content)
'on error resume next
st=timer
set re=new regexp
re.global=true

re.pattern="\[code\](\r\n)?([\s\S]+?)\[\/code\]"
Set Matches = re.Execute(content) ' Execute search.
dim code()
n=0
if re.test(content) then codeb=true
if codeb then
For Each Match in Matches ' Iterate Matches collection.
redim Preserve code(n)
code(n) =Match.Value
n=n+1
Next
for i=0 to ubound(code)
if code(i)="" then exit for
content=replace(content,code(i),"{code"&i&"}")
next
end if


re.pattern="\[html\](\r\n)?([\s\S]+?)\[\/html\]"
Set Matches = re.Execute(content) ' Execute search.
dim html()
n=0
if re.test(content) then htmlb=true
if htmlb then
For Each Match in Matches ' Iterate Matches collection.
redim Preserve html(n)
html(n) =Match.Value
n=n+1
Next
for i=0 to ubound(html)
if html(i)="" then exit for
content=replace(content,html(i),"{html"&i&"}")
next
end if

content=gmt(content) 'ubb


if codeb then
for i=0 to ubound(code)
if code(i)="" then exit for
tcode=hencode(code(i))
content=replace(content,"{code"&i&"}",tcode)
next
end if
'-----
re.pattern="\[html\](\r\n)?([\s\S]+?)\[\/html\]"
Set Matches = re.Execute(content) ' Execute search.
dim html2()
n=0
if re.test(content) then html2b=true
if html2b then
For Each Match in Matches ' Iterate Matches collection.
redim Preserve html2(n)
html2(n) =Match.Value
n=n+1
Next
for i=0 to ubound(html2)
if html2(i)="" then exit for
content=replace(content,html2(i),"{html2"&i&"}")
next
end if


if htmlb then
for i=0 to ubound(html)
if html(i)="" then exit for
thtml=hencode(html(i))
content=replace(content,"{html"&i&"}",thtml)
next
end if

re.Pattern="(\[code\])(\r\n)?([\s\S]+?)(\[\/code\])"
content=re.Replace(content,"<PRE class=CodeSamp>$3</PRE>")

re.Pattern="(\[html\])(\r\n)?([\s\S]+?)(\[\/html\])"
content=re.Replace(content,"<span><TEXTAREA cols=95 rows=12>$3</TEXTAREA><br><INPUT onclick=runCode() type=button value=运行代码>[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]</span>")

if html2b then
for i=0 to ubound(html2)
if html2(i)="" then exit for
thtml2=html2(i)
content=replace(content,"{html2"&i&"}",thtml2)
next
end if

UBBCode=content
msgbox "转换共耗时 "&formatnumber((timer-st)*1000,2)&" ms"
end function

function hencode(fString) '简单模拟server.htmlencode ASP中不用这个
fString = replace(fString,"&","&")
fString = replace(fString,">",">")
fString = replace(fString,"<","<")
hencode=fString
end function

function DvbbsHtmlAn(fString)

if not isnull(fString) then
fString=hencode(fString)
fString = Replace(fString, CHR(9), " ") 'Tab
fString = Replace(fString, CHR(34), """) '"
fString = Replace(fString, CHR(39), "'") ''
fString = Replace(fString, CHR(13), "") '回车是一个13+10
fString = Replace(fString, CHR(10) & CHR(10), "<P>")' '
fString = Replace(fString, CHR(10), "<BR>")
fString = Replace(fString, CHR(32), " ") ' 空格
DvbbsHtmlAn = fString
end if
end function

function gmt(strContent)

strContent=DvbbsHtmlAn(strContent)
dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True

re.Pattern="(\[IMG\])(.*?)(\[\/IMG\])"
strContent=re.Replace(strContent,"<a href=$2 target=_blank><IMG SRC=""$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333"" galleryImg=no></a>")

if Not UserSign or (UserSign and UserImgCode=1) then
re.Pattern="\[DIR=*([0-9]*),*([0-9]*)\](.*?)\[\/DIR]"
strContent=re.Replace(strContent,"<object classid=clsid:166B1BCA-3F9C-11CF-8075-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=7,0,2,0 width=$1 height=$2><param name=src value=$3><embed src=$3 pluginspage=http://www.macromedia.com/shockwave/download/ width=$1 height=$2></embed></object>")
re.Pattern="\[QT=*([0-9]*),*([0-9]*)\](.*?)\[\/QT]"
strContent=re.Replace(strContent,"<embed src=$3 width=$1 height=$2 autoplay=true loop=false controller=true playeveryframe=false cache=false scale=TOFIT bgcolor=#000000 kioskmode=false targetcache=false pluginspage=http://www.apple.com/quicktime/>")
re.Pattern="\[MP=*([0-9]*),*([0-9]*)\](.*?)\[\/MP]"
strContent=re.Replace(strContent,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=$1 height=$2 ><param name=ShowStatusBar value=-1><param name=Filename value=$3><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=$3 width=$1 height=$2></embed></object>")
re.Pattern="\[RM=*([0-9]*),*([0-9]*)\](.*?)\[\/RM]"
strContent=re.Replace(strContent,"<OBJECT classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA class=OBJECT id=RAOCX width=$1 height=$2><PARAM NAME=SRC VALUE=$3><PARAM NAME=CONSOLE VALUE=Clip1><PARAM NAME=CONTROLS VALUE=imagewindow><PARAM NAME=AUTOSTART VALUE=true></OBJECT><br><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>")
end if

re.Pattern="(\[FLASH\])(.*?)(\[\/FLASH\])"
strContent= re.Replace(strContent,"<OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=500 height=400><PARAM NAME=movie VALUE=""$2""><PARAM NAME=quality VALUE=high><embed src=""$2"" quality=high pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=500 height=400>$2</embed></OBJECT>")
re.Pattern="(\[FLASH=*([0-9]*),*([0-9]*)\])(.*?)(\[\/FLASH\])"
strContent= re.Replace(strContent,"<a href=""$4"" TARGET=_blank><IMG SRC=pic/swf.gif border=0 alt=点击开新窗口欣赏该FLASH动画!> [全屏欣赏]</a><br><br><OBJECT codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=$2 height=$3><PARAM NAME=movie VALUE=""$4""><PARAM NAME=quality VALUE=high><param name=menu value=false><embed src=""$4"" quality=high menu=false pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width=$2 height=$3>$4</embed></OBJECT>")

re.Pattern="(\[UPLOAD=gif\])(.*?)(\[\/UPLOAD\])"
strContent= re.Replace(strContent,"<br><IMG SRC="""&picurl&"gif.gif"" border=0>此主题相关图片如下:<br><A HREF=""$2"" TARGET=_blank><IMG SRC=""$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></A>")
re.Pattern="(\[UPLOAD=jpg\])(.*?)(\[\/UPLOAD\])"
strContent= re.Replace(strContent,"<br><IMG SRC="""&picurl&"jpg.gif"" border=0>此主题相关图片如下:<br><A HREF=""$2"" TARGET=_blank><IMG SRC=""$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></A>")
re.Pattern="(\[UPLOAD=bmp\])(.*?)(\[\/UPLOAD\])"
strContent= re.Replace(strContent,"<br><IMG SRC="""&picurl&"bmp.gif"" border=0>此主题相关图片如下:<br><A HREF=""$2"" TARGET=_blank><IMG SRC=""$2"" border=0 alt=按此在新窗口浏览图片 onload=""javascript:if(this.width>screen.width-333)this.width=screen.width-333""></A>")

re.Pattern="(\[UPLOAD=(.[^\[]*)\])(.*?)(\[\/UPLOAD\])"
strContent= re.Replace(strContent,"<br><IMG SRC="""&picurl&"$2.gif"" border=0> <a href=""$3"">点击浏览该文件</a>")

re.Pattern="(\[URL\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2"" TARGET=_blank>$2</A>")
re.Pattern="(\[URL=(.[^\[]*)\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2"" TARGET=_blank>$3</A>")

re.Pattern="(\[EMAIL\])(.*?)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"<img align=absmiddle src=pic/email1.gif><A HREF=""mailto:$2"">$2</A>")
re.Pattern="(\[EMAIL=(.[^\[]*)\])(.*?)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"<img align=absmiddle src=pic/email1.gif><A HREF=""mailto:$2"" TARGET=_blank>$3</A>")

re.Pattern = "^(http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "(http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)$"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "(<BR>|<P>)(http://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)(<BR>|<P>)"
strContent = re.Replace(strContent,"$1<img align=absmiddle src=pic/url.gif><a target=_blank href=$2>$2</a>$3")
re.Pattern = "^(ftp://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "(ftp://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)$"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "[^>=""](ftp://[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "^(rtsp://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "(rtsp://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)$"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "[^>=""](rtsp://[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "^(mms://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "(mms://[A-Za-z0-9\./=\?%\-&_~`@':+!]+)$"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")
re.Pattern = "[^>=""](mms://[A-Za-z0-9\.\/=\?%\-&_~`@':+!]+)"
strContent = re.Replace(strContent,"<img align=absmiddle src=pic/url.gif><a target=_blank href=$1>$1</a>")

if strIcons = "1" then '笑脸转换
re.Pattern="(\["&ImgName&"(.*?)\])"
strContent=re.Replace(strContent,"<img src="&picurl&ImgName&"$2.gif border=0 align=middle>")
end if

if strSmile = "1" then '笑脸转换
re.Pattern="(\[s(\d{1,2})\])"
strContent=re.Replace(strContent,"<img src=smile/face$2.gif border=0 align=middle>")
end if


re.Pattern="(\[color=(.[^\[]*)\])(.*?)(\[\/color\])"
strContent=re.Replace(strContent,"<font color=$2 style=""font-size:"&FontSize&"pt;line-height:"&FontHeight&"pt"">$3</font>")
re.Pattern="(\[face=(.[^\[]*)\])(.*?)(\[\/face\])"
strContent=re.Replace(strContent,"<font face=$2 style=""font-size:"&FontSize&"pt;line-height:"&FontHeight&"pt"">$3</font>")
re.Pattern="(\[align=(.[^\[]*)\])(.*?)(\[\/align\])"
strContent=re.Replace(strContent,"<div align=$2>$3</div>")
'循环转换quote
re.Pattern="(\[QUOTE\])(.*?)(\[\/QUOTE\])"
while (instr(strContent,"[quote]")>0 and instr(strContent,"[/quote]")>0)
strContent=re.Replace(strContent,"<blockquote>引用:<hr><span>$2</span><hr></blockquote>")
wend
re.Pattern="(\[fly\])(.*?)(\[\/fly\])"
strContent=re.Replace(strContent,"<marquee width=90% behavior=alternate scrollamount=3>$2</marquee>")
re.Pattern="(\[move\])(.*?)(\[\/move\])"
strContent=re.Replace(strContent,"<MARQUEE scrollamount=3>$2</marquee>")
re.Pattern="\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/GLOW]"
strContent=re.Replace(strContent,"<table width=$1 style=""filter:glow(color=$2, strength=$3)"">$4</table>")
re.Pattern="\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.*?)\[\/SHADOW]"
strContent=re.Replace(strContent,"<table width=$1 style=""filter:shadow(color=$2, strength=$3)"">$4</table>")

re.Pattern="(\[i\])(.*?)(\[\/i\])"
strContent=re.Replace(strContent,"<i>$2</i>")
re.Pattern="(\[u\])(.*?)(\[\/u\])"
strContent=re.Replace(strContent,"<u>$2</u>")
re.Pattern="(\[b\])(.*?)(\[\/b\])"
strContent=re.Replace(strContent,"<b>$2</b>")

re.Pattern="(\[size=1\])(.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=1 style=""line-height:"&FontHeight&"pt"">$2</font>")
re.Pattern="(\[size=2\])(.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=2 style=""line-height:"&FontHeight&"pt"">$2</font>")
re.Pattern="(\[size=3\])(.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=5 style=""line-height:"&FontHeight&"pt"">$2</font>")
re.Pattern="(\[size=4\])(.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=6 style=""line-height:"&FontHeight&"pt"">$2</font>")
re.Pattern="\[size=([+|-]?[0-7])\](.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=$1 style=""line-height:"&FontHeight&"pt"">$2</font>")

re.Pattern="(\[center\])(.*?)(\[\/center\])"
strContent=re.Replace(strContent,"<center>$2</center>")

re.Pattern="(\[table=(#*[a-z0-9]*),(#*[a-z0-9]*),(#*[a-z0-9]*)\])(.*?)(\[\/table\])"
strContent=re.Replace(strContent,"<table border=0 cellpadding=5 cellspacing=1 bgcolor=$2><tr><td bgcolor=$3><font color=$4>$5</font></td></tr></table>")

'{HTML} start
're.Pattern="(\[html\])(.*?)(\[\/html\])"
'strContent=re.Replace(strContent,"<span><TEXTAREA cols=95 rows=12>$2</TEXTAREA><br><INPUT onclick=runCode() type=button value=运行代码>[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]</span>")

'{/HTML}end


set re=Nothing
gmt=strContent
end function

</script>