首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 操作系统-> Windows xp教程
在ASP中利用“正则表达式” 对象实现UBB风格的论坛-ASP教程,正则表达式
作者:网友供稿 点击:38
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
上一次,我们谈到在asp中如何利用“正则表达式”对象来实现各种数据的校验,文中描述了正则表达式对象的强大功能,接下来,我们来看看有关“正则表达式”对象的其他功能。当我们在网上冲浪的时候,尤其是浏览各类论坛的时候,经常会见到“ubb代码”这个词语。什么是ubb代码呢?ubb代码是html的一个变种,是ultimate bulletin board (国外一个bbs程序,国内也有不少地方使用这个程序)采用的一种特殊的tag。为了避免用户无意或者有意的html代码对论坛的攻击,各种论坛基本上都屏蔽了html代码,但是为了使得论坛更加“多姿多彩”,论坛都会相应的开放一些自定义的tag标签,类似于html中的tag,比如“[url],[/url],[red],[/red]”,这样,可以提供一些等同于html代码的功能,又避免了论坛受到恶意攻击,这些自定义的各种tag就是俗称的ubb代码。眼下时髦的论坛均支持ubb代码,比如:http://www。chinaasp。com(动感技术网络)的论坛就很好的支持ubb代码。现在,我们一同使用“正则表达式”对象来实现我们自己的丰富多彩的ubb代码吧。

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

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

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代码是粗体).

[url]www.test.net[/url]

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

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

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

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

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

[img]http://www.test.net/test.gif[/img]

在上例中,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("(\[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中运行通过) 
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·用ghost完美克隆windows xp+sp2
·[ASP.NET]如何在客户端调用服务端代码-.NET教程,Asp.Net开发
·安装windows sp2后 程序为何不能运行
·windows xp系统虚拟内存的标准设置方法
·SQL Server端口更改后的数据库连接方式-ASP教程,数据库相关
·Java学生成绩管理系统源代码-JSP教程,Java技巧及代码
·精华的微软文章".NET 数据访问架构指南"-.NET教程,数据库应用
·系统高手 xp最新应用技巧六招
·windows xp操作系统疑难问题巧解决
·SQL Server 调用C#。net写的Dll ,(分享我的HelloWorld测验)-.NET教程,C#语言
最新文章
·谈谈三年来做站的经验_站长心得
·用户的体验习惯化与去习惯化_站长心得
·web2.0网站需要借鉴的七种传统赢利模式_站长心得
·网页布局的位置重心与位置间的对比关系_站长心得
·google adsense公益广告的替代方法_google推广
·google adsense全面解析_google推广
·2006年关于google等的15项预测_google推广
·google搜索技巧_google推广
·有趣的网上搜索_google推广
·网站制作简易流程介绍_站长心得
相关主题
  • 在ASP中使用脚本语言-ASP教程,ASP应用
  • 在ASP中自动创建多级文件夹的函数(使用FSO)-ASP教程,ASP技巧
  • 在ASP中轻松实现记录集分页显示-ASP教程,ASP技巧
  • 在ASP中访问和更新Cookies集合-ASP教程,ASP技巧
  • 在ASP中操作HTTP报头方法分析-ASP教程,ASP技巧
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭