来源:网络 | 2007-4-18 | (有2897人读过)
什么是UBB? UBB其实是国外的一个BBS程序(Ultimate Bulletin Board)采用的一种特殊的标记的简称。 大家知道,在网上一般允许用户输入纯文本,但不会允许用户输入HTML代码。因为如果允许用户直接输入HTML代码,可能就有人会利用恶意代码破坏系统。可是有时候特别需要用户输入一些超链接地址或图片,那怎么办呢? 此时,就可以使用UBB代码,这是一种特殊的标记,要求用户必须按这种格式要求输入,如: [ B]……[/b] 表示中间文本用黑体显示 [ I]……[/i] 表示中间文本用斜体显示 [ U]……[/u] 表示中间文本用下划线显示 [ URL]……[/url] 表示中间文本是一个超链接地址 [ IMG]……[/img] 表示中间文本是一个图片的地址 当用户输入后,就需要将其显示在页面上。可是浏览器只不能识别UBB代码,它只认识HTML代码。如果直接输出呢,就可能会输出如下内容的代码: 这是一张图片[ IMG]http://www.pku.edu.cn/pkuimages/pku_word1 .jpg[/img] 如果想正确显示呢,就需要利用字符串函数对上面的字符串进行处理,将其修改为标准的HTML代码,如: 这是一张图片<img src="http://www.pku.edu.cn/pkuimages/pku_word1 .jpg"> 这样才能正确显示图片。
UBB的实现过程
UBB的实现过程基本可以总结为如下过程 用户输入UBB代码→系统将其转换为HTML代码→将HTML代码显示在页面上。
UBB的难点
(1)如何将UBB代码替换为HTML代码? 这就需要用到字符串函数,如Replace等,将其中的UBB代码替换为HTML代码即可,如将替换为<b>,将替换为</b>。 (2)如何帮助用户写UBB代码? 理论上可以让用户自己输入所有的UBB标记,如ubb1.0中的示例;但是由于普通用户撰写起来比较困难,所以很多系统会帮助用户书写UBB标记,这一般需要用JavaScript在客户端操作。
说明 (1) UBB的中心思想就是让客户输入一种特殊标记,然后由系统将其转换为标准的HTML标记显示在页面上。 (2) 本示例主要是为了讲解原理,所以只选取了五个UBB标记,其实还可以添加声音、flash等各种其它标记。基本原理都是一样的。
一个简单的UBBtoHTML函数
<% ’************************************************ ’函数文件,这里利用正则表达式替换其中的UBB代码为标准的HTML代码 ’************************************************ Function UBBtoHTML(content) ’建立正则表达式对象实例r。 dim r set r=new RegExp r.ignorecase=true ’忽略大小写 r.Global=true ’进行全局查找 ’替换斜体字 r.pattern="(\[i\])(.[^\[]*)(\[\/i\])" content=r.Replace(content,"<i>$2</i>")
’替换粗体字 r.pattern="(\[b\])(.[^\[]*)(\[\/b\])" content=r.Replace(content,"<b>$2</b>") ’再替换下划线 r.pattern="(\[u\])(.[^\[]*)(\[\/u\])" content=r.Replace(content,"<u>$2</u>") ’下面替换图片,本质上就要将[ IMG]http://www.jjshang.com/temp .jpg[/img]替换为<img src="http://www.jjshang.com/temp .jpg"> ’其实只要把[ IMG]替换为<img src=",把[/img]替换为">即可。 r.pattern="(\[img\])(.[^\[]*)(\[\/img\])" content=r.Replace(content,"<img src=""$2"">") ’下面替换超链接,本质上就要将http://www.jjshang.com替换为<a target="_blank" href="http://www.cncfan.com/outurl.asp?url=http://www.pku.edu.cn">http://www.jjshang.com<;/a> r.pattern="(\[url\])(.[^\[]*)(\[\/url\])" content=r.Replace(content,"<a href=""$2"" target=""_blank"">$2</a>") ’返回函数值 UBBtoHTML=content End Function %>
|