网络编程
位置:首页>> 网络编程>> Asp编程>> ASP中利用正则表达式实现论坛UBB代码转换(3)

ASP中利用正则表达式实现论坛UBB代码转换(3)

  发布时间:2008-02-29 11:49:00 

标签:ubb,正则表达式,论坛,asp

我们主要使用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("(\[i])(\S+)(\[/i])",str,"<i>$2</i>")  ‘进行UBB代码的模版匹配与替换 
else 
temp=ReplaceTest("(\[i])(\S+)(\[/i])",temp,"<i>$2</i>")  ‘进行UBB代码的模版匹配与替换 
end if 
temp=ReplaceTest("(\[b])(\S+)(\[/b])",temp,"<b>$2</b>")  ‘进行UBB代码的模版匹配与替换 
temp=ReplaceTest("(\[big])(\S+)(\[/big])",temp,"<big>$2</big>") ‘进行UBB代码的模版匹配与替换 
temp=ReplaceTest("(\[strike])(\S+)(\[/strike])",temp,"<strike>$2</strike>")‘进行UBB代码的模版匹配与替换 
temp=ReplaceTest("(\[sub])(\S+)(\[/sub])",temp,"<sub>$2</sub>")‘进行UBB代码的模版匹配与替换 
temp=ReplaceTest("(\[sup])(\S+)(\[/sup])",temp,"<sup>$2</sup>") 
temp=ReplaceTest("(\[pre])(\S+)(\[/pre])",temp,"<pre>$2</pre>") 
temp=ReplaceTest("(\[u])(\S+)(\[/u])",temp,"<u>$2</u>") 
temp=ReplaceTest("(\[small])(\S+)(\[/small])",temp,"<small>$2</small>") 
temp=ReplaceTest("(\[h1])(\S+)(\[/h1])",temp,"<h1>$2</h1>") 
temp=ReplaceTest("(\[h2])(\S+)(\[/h2])",temp,"<h2>$2</h2>") 
temp=ReplaceTest("(\[h3])(\S+)(\[/h3])",temp,"<h3>$2</h3>") 
temp=ReplaceTest("(\[h4])(\S+)(\[/h4])",temp,"<h4>$2</h4>") 
temp=ReplaceTest("(\[h5])(\S+)(\[/h5])",temp,"<h5>$2</h5>") 
temp=ReplaceTest("(\[h6])(\S+)(\[/h6])",temp,"<h6>$2</h6>") 
temp=ReplaceTest("(\[red])(\S+)(\[/red])",temp,"<font color=red>$2</font>") 
'这里可以增加新的UBB代码的实现模版 
temp=ReplaceTest("(\[email])(\S+)(\[/email])",temp,"<a href=""mailto:$2"" target=_top>$2</a>") 
temp=ReplaceTest("(\[img])(\S+)(\[/img])",temp,"<img src=""$2"">") 
temp=ReplaceTest("(\[url])(\S+)(\[/url])",temp,"<a href=""$2"" target=_top>$2</a>") 
temp=ReplaceTest("(\[#(\S+)])(\S+)(\[/#])",temp,"<font color=$1>$3</font>")‘进行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中运行通过)

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com