当前位置: 首页 > 图文教程 > 网络编程 > 正则表达式 > 论坛UBB代码 推荐

正则表达式
去除内容中的html
转换文本为超连接和Email格式的代码
正则表达式regular expression详述(一)
正则表达式regular expression详述(二)
17种正则表达式
正则表达式练习器
ubbcode简单实用
在ASP中用“正则表达式对象”来校验数据的合法性
JScript中正则表达函数的说明与应用
截字符串 去除HTML标记
学习网址
ubb代码转换为html
Javascript正则表达式测试网页
正则表达式验证
一个特牛的日期时间判断正则表达式
好东西,老外用正则表达式写的HTML分离函数
asp的ubb函数(推荐)
正则表达式中的特殊字符
常用的匹配正则表达式和实例
正则表达式在UBB论坛中的应用

正则表达式 中的 论坛UBB代码 推荐


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

复制代码 代码如下:

<%
dim param,smiles 'param是UBB标签完全可用的标记 param=full 则完全可用,否则不支持一些占位大的标签 smiles是禁止笑脸转换
function UBBCode(content)
dim n,i
'on error resume next
set re=new regexp
re.IgnoreCase=true
re.global=true

re.pattern="\[code\](\r\n)?([\s\S]+?)\[\/code\]"
Set Matches = re.Execute(content)
dim code()
n=0
if re.test(content) then codeb=true
if codeb then
For Each Match in Matches
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

if param="full" then
re.pattern="\[html\](\r\n)?([\s\S]+?)\[\/html\]"
Set Matches = re.Execute(content)
dim html()
n=0
if re.test(content) then htmlb=true
if htmlb then
For Each Match in Matches
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
end if
content=gmt(content) 'ubb


if codeb then
for i=0 to ubound(code)
if code(i)="" then exit for
tcode=server.htmlencode(code(i))
content=replace(content,"{code"&i&"}",tcode)
next
end if
'-----处理[code] 中的[html]
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 param="full" then
if htmlb then
for i=0 to ubound(html)
if html(i)="" then exit for
thtml=server.htmlencode(html(i))
content=replace(content,"{html"&i&"}",thtml)
next
end if
end if

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

if param="full" then
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=运行代码> <input onclick=copyCode() type=button value=复制代码>[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]</span>")
end if

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
end function


function gmt(strContent)

strContent=HTMLfilter(strContent)

dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True


if param="full" then
if not smiles then '笑脸转换

re.Pattern="(\[em(\d{1,2})\])"
strContent=re.Replace(strContent,"<img src=images/em$2.gif border=0 align=middle>")

're.Pattern=":\)"
'strContent=re.Replace(strContent,"<img src=images/smile.gif border=0 align=middle>")
're.Pattern=":\("
'strContent=re.Replace(strContent,"<img src=images/frown.gif border=0 align=middle>")
're.Pattern=":o"
'strContent=re.Replace(strContent,"<img src=images/redface.gif border=0 align=middle>")
're.Pattern=":D"
'strContent=re.Replace(strContent,"<img src=images/biggrin.gif border=0 align=middle>")
're.Pattern=";\)"
'strContent=re.Replace(strContent,"<img src=images/wink.gif border=0 align=middle>")
're.Pattern=":p"
'strContent=re.Replace(strContent,"<img src=images/tongue.gif border=0 align=middle>")
're.Pattern=":cool:"
'strContent=re.Replace(strContent,"<img src=images/cool.gif border=0 align=middle>")
're.Pattern=":rolleyes:"
'strContent=re.Replace(strContent,"<img src=images/rolleyes.gif border=0 align=middle>")
're.Pattern=":mad:"
'strContent=re.Replace(strContent,"<img src=images/mad.gif border=0 align=middle>")
're.Pattern=":eek:"
'strContent=re.Replace(strContent,"<img src=images/eek.gif border=0 align=middle>")
're.Pattern=":confused:"
'strContent=re.Replace(strContent,"<img src=images/confused.gif border=0 align=middle>")
're.Pattern=":cry:"
'strContent=re.Replace(strContent,"<img src=images/cry.gif border=0 align=middle>")

end if

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

'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=(\d+),(\d+)\](.*?)\[\/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=playCount value=10><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"" playCount=10 width=$1 height=$2></embed></object>")

'mp3
re.Pattern="\[MP3](.*?)\[\/MP3]"
strContent=re.Replace(strContent,"<object align=middle classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95 class=OBJECT id=MediaPlayer width=300 height=180 ><param name=ShowStatusBar value=-1><param name=playCount value=10><param name=Filename value=""$1""><embed type=application/x-oleobject codebase=http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701 flename=mp src=""$1"" playCount=10 width=300 height=180></embed></object>")


re.Pattern="\[RM=(\d+),(\d+)\](.*?)\[\/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>")

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=(\d+),(\d+)\])(.*?)(\[\/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=$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>")


'循环转换quote
re.Pattern="(\[QUOTE\])(.*?)(\[\/QUOTE\])"
while re.test(strContent)
strContent=re.Replace(strContent,"<blockquote>引用:<hr class=bordercolor><span>$2</span><hr class=bordercolor></blockquote>")
wend

re.Pattern="(\[w\])(.*?)(\[\/w\])"
strContent=re.Replace(strContent,"<IFRAME FRAMEBORDER=1 ALIGN=CENTER width=100% HEIGHT=400 SCROLLING=YES SRC=$2></iframe><br>页面:<A HREF=$2 target=_blank>点这儿参观</A>")

end if '大空间标签

re.Pattern="(\[ATTACHMENT=(.*?)\])(.*?)(\[\/ATTACHMENT\])"
strContent= re.Replace(strContent,"<p><img src=images/attachment.gif> <a href=""$2"" TARGET=_blank title=""提示:"&chr(13)&"您可以单击右键另存为把该文件下载到本地机器"">$3</a><p>")

re.Pattern="(\[URL\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2"" TARGET=_blank>$2</A>")
re.Pattern="(\[URL=(http|https|ftp|rtsp|mms)(:\/\/)(.*?)\])(.*?)(\[\/URL\])"
strContent= re.Replace(strContent,"<A HREF=""$2$3$4"" TARGET=_blank>$5</A>")

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

re.Pattern = "(^|\s|<br>|<p>)(http|https|ftp|rtsp|mms)(:\/\/)(\S+)"
strContent = re.Replace(strContent,"$1<a target=_blank href=$2$3$4>$4</a>")
re.Pattern = "(^|\s|<br>|<p>)(www.)(\S+)"
strContent = re.Replace(strContent,"$1<a target=_blank href=http://$2$3>$2$3</a>")

'文本效果
re.Pattern="(\[list\])(.+?)(\[\/list\])"
strContent=re.Replace(strContent,"<UL TYPE=SQUARE>$2</UL>")
re.Pattern="(\[list=)(A|1)(\])(.+?)(\[\/list\])"
strContent=re.Replace(strContent,"<OL TYPE=$2>$4</OL>")
re.Pattern="(\[\*\])"
strContent=re.Replace(strContent,"<LI>")

re.Pattern="(\[color=(.*?)\])(.*?)(\[\/color\])"
strContent=re.Replace(strContent,"<font color=$2>$3</font>")
re.Pattern="(\[#(.{6}?)\])(.*?)(\[\/#\])"
strContent=re.Replace(strContent,"<font color=#$2>$3</font>")
re.Pattern="(\[font=(.*?)\])(.*?)(\[\/font\])"
strContent=re.Replace(strContent,"<font face=$2>$3</font>")
re.Pattern="(\[align=(left|center|right)\])(.*?)(\[\/align\])"
strContent=re.Replace(strContent,"<div align=$2>$3</div>")

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="(\[sup\])(.*?)(\[\/sup\])"
strContent=re.Replace(strContent,"<sup>$2</sup>")
re.Pattern="(\[sub\])(.*?)(\[\/sub\])"
strContent=re.Replace(strContent,"<sub>$2</sub>")

re.Pattern="\[size=([+|-]?[0-7])\](.*?)(\[\/size\])"
strContent=re.Replace(strContent,"<font size=$1>$2</font>")

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

set re=Nothing

gmt=strContent
end function


Rem 过滤HTML代码
function HTMLfilter(fString)
if not isnull(fString) then
fString=server.htmlencode(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), " ") ' 空格
HTMLfilter = fString
end if
end function
%>
<%
Function isemail(strng)
isemail = false
Dim regEx, Match ' Create variables.
Set regEx = New RegExp ' Create a regular expression object (stupid, huh?)
regEx.Pattern = "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$" ' Sets pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
Set Match = regEx.Execute(strng) ' Execute search.
if match.count then isemail= true
End Function
%>