您的位置:首页精文荟萃软件资讯 → 实现UBB代码

实现UBB代码

时间:2004/10/7 19:16:00来源:本站整理作者:蓝点我要评论(0)












上一次,我们谈到在ASP中如何利用“正则表达式”对象来实现各种数据的校验,文中描述了正则表达式对象的强大功能,接下来,
我们来看看有关“正则表达式”对象的其他功能。当我们在网上冲浪的时候,尤其是浏览各类论坛的时候,经常会见到“UBB代码”
这个词语。什么是UBB代码呢?UBB代码是HTML的一个变种,是Ultimate Bulletin Board (国外一个BBS程序,国内也有不少地方
使用这个程序)采用的一种特殊的TAG。为了避免用户无意或者有意的HTML代码对论坛的攻击,各种论坛基本上都屏蔽了HTM
L代码,但是为了使得论坛更加“多姿多彩”,论坛都会相应的开放一些自定义的Tag标签,类似于HTML中的Tag,比如
“,,[RED],[/RED]”,这样,可以提供一些等同于HTML代码的功能,又避免了论坛受到恶意攻击,这些自定义的
各种Tag就是俗称的UBB代码。眼下时髦的论坛均支持UBB代码,比如:http://www。chinaasp。com(动
感技术网络)的论坛就很好的支持UBB代码。现在,我们一同使用“正则表达式”对象来实现我们自己的丰富多彩的UBB代码吧。

首先,你的服务器端(IIS或者PWS)要有VBScript5.0的支持环境,一般指要安装了IE5.X就已经可以支持“正则表达式”对
象了。

关于“正则表达式”对象的常见方法、属性的使用方法,我在本刊的“在ASP中利用“正则表达式”对象实现数据的校验”一文中已
经有详细介绍了,可以参见那一篇文章,在这里,我主要介绍一下实现“UBB代码”的主要正则表达式对象方法:Replace()方
法。

Replace方法语法如下:

描述

替换在正则表达式查找中找到的文本。

语法

object.Replace(string1, string2)

Replace 方法的语法包含以下几个部分:

部分       描述

object       必需的。总是一个 RegExp 对象的名称。

string1      必需的。string1 是将要进行文本替换的字符串。

string2      必需的。 string2 是替换文本字符串。



说明

被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。

Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回
原来的 string1 的副本。

接下来,我们要确定我们最终想要实现一套什么样的UBB代码?这次我们要实现的UBB代码功能如下:

URL超级链接
在你的信息里加入超级链接,只要按下列方式套入就可以了(UBB代码是粗体).

www.test.net

按上例套入,UBB代码会自动对URL产生链接,并保证当用户点击新的窗口时这个链接是打开着的。

电子邮件链接
在你的信息里加入电子邮件的超级链接,只要按照下例套入就可以了(UBB代码是粗体)

[email] uestc95@263.net [/email]

按上例套入,UBB代码会对电子邮件自动产生链接。

加入图象
在你的信息里加入图象,只要按下例套入就可以了(UBB代码是粗体).

screen.width-300)this.width=screen.width-300" _src=" http://www.test.net/test.gif ">

在上例中,UBB代码会自动让图象在你的信息里显示。

其他Tag

还有这些tag , u small h1 h2 h3 h4 h5 h6 strike blink sub sup del pre big , 这些tag的功能与html的功能等同

[h1]这是一个标题[/h1]

[/tag]是必须的

让一段文字使用颜色显示
这是一个特殊的tag

[#ff0000]一段红色的字[/#]

#后面跟的颜色的16进制RGB代码,如红色是ff0000,绿色是00ff00,而蓝色是0000ff

至于其他各式各样的UBB代码的实现方式同上面的类似,我们就以上面UBB代码实现作为例子来讲解“正则表达式”对象的强大功
能。

我们主要使用Replace()方法配合相应的模版,就可以方便的实现UBB代码功能了,在这里我们主要用到了两个自己编写的函数,第
一个函数ReplaceTest,这个函数实现的功能主要是将“正则表达式”对象进行了封装,提供三个入口参数:

Patrn
这个参数传递的是UBB代码的匹配模版

Str
这个参数传递的是将要以UBB方式处理的字符串,比如文章内容。

ReplStr
这个参数传递的是匹配成的HTML代码语言。

ReplaceTest函数的出口参数是经过模版匹配替换之后的字符串。

ReplaceTest函数代码如下:

Function ReplaceTest(patrn,str,replStr)

Dim regEx, str1 ' 建立变量。

str1=trim(str)

Set regEx = New RegExp ' 建立正则表达式。

regEx.Pattern = patrn ' 设置模式。

regEx.IgnoreCase = true ' 设置是否区分大小写。

ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。

set regEx=nothing ‘销毁正则表达式对象

End Function

我们要编写的第二个函数是:UBB()函数。这个函数实现的功能就是将一段文本进行UBB功能的转换。这个函数仅仅只有一个入口参
数:

Str
这个参数传递要被处理的字符串。

UBB函数的出口参数是经过UBB代码处理过后的字符串。

UBB函数的代码如下:(程序中有详细注释信息)

Function UBB(str)

dim i,temp ‘声明变量

i=1

temp=""

do while instr(i,str,"[/"]>=1 ‘如果没有达到字符串的末尾

if trim(temp)="" then

temp=ReplaceTest("(\)(\S+)(\ )",str,"$2")  ‘进行UBB代码的模版匹配与替换

else

temp=ReplaceTest("(\)(\S+)(\ )",temp,"$2")  ‘进行UBB代码的模版匹配与替换

end if

temp=ReplaceTest("(\)(\S+)(\ )",temp,"$2")  ‘进行UBB代码的模版匹配与替换

temp=ReplaceTest("(\[big])(\S+)(\[/big])",temp,"$2") ‘进行UBB代码的模版匹配与替换

temp=ReplaceTest("(\[strike])(\S+)(\[/strike])",temp,"$2")‘进行UBB代码的模版匹配与替换

temp=ReplaceTest("(\[sub])(\S+)(\[/sub])",temp,"$2")‘进行UBB代码的模版匹配与替换

temp=ReplaceTest("(\[sup])(\S+)(\[/sup])",temp,"$2")

temp=ReplaceTest("(\[pre])(\S+)(\[/pre])",temp,"

 

$2

 

")

temp=ReplaceTest("(\)(\S+)(\)",temp,"$2")

temp=ReplaceTest("(\[small])(\S+)(\[/small])",temp,"$2")

temp=ReplaceTest("(\[h1])(\S+)(\[/h1])",temp,"

$2

")

temp=ReplaceTest("(\[h2])(\S+)(\[/h2])",temp,"

$2

")

temp=ReplaceTest("(\[h3])(\S+)(\[/h3])",temp,"

$2

")

temp=ReplaceTest("(\[h4])(\S+)(\[/h4])",temp,"

$2

")

temp=ReplaceTest("(\[h5])(\S+)(\[/h5])",temp,"

$2

")

temp=ReplaceTest("(\[h6])(\S+)(\[/h6])",temp,"

$2

")

temp=ReplaceTest("(\[red])(\S+)(\[/red])",temp,"$2")

'这里可以增加新的UBB代码的实现模版

temp=ReplaceTest("(\[email])(\S+)(\[/email])",temp,"$2")

temp=ReplaceTest("(\screen.width-300)this.width=screen.width-300" _src=")(\S+)(\">)",temp,"")

temp=ReplaceTest("(\)(\S+)(\)",temp,"$2")

temp=ReplaceTest("(\[#(\S+)])(\S+)(\[/#])",temp,"$3")‘进行UBB代码的模版匹配与替换

i=i+1

loop

if trim(temp)<>"" then

UBB=temp ‘将经过UBB代码过滤后的字符串传出

else

UBB=str  ‘将经过UBB代码过滤后的字符串传出

end if

end function

在函数UBB的代码中我们可以看到“$1”,“$2”,“$3”等等,这些字符串就是匹配后的字符串的代词,就如同一些“宏”一
样,我们可以使用他们方便代替匹配到的字符串,而不必再使用程序去记住匹配字符串的位置。通过这两个简单的函数调用,我们
实现了UBB代码的功能,怎么样,很简单吧。

这样,我们只要在显示文章的时候调用UBB函数,对文章内容进行处理之后,再显示到浏览器上面,就实现了论坛的UBB代码功能。
并且,你可以方便的在函数UBB添加需要的UBB代码匹配替换模版,从而可以不断的扩充你的UBB代码的功能。
(以上程序均在WinNT4.0英文版SP5,IIS4.0,IE5.x中运行通过)

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本