UBB 代码的原理简介

什么是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 href="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
%>

上一篇: 秘籍:右键菜单终极锤炼术
下一篇: 熟悉的地方也有风景
文章来自: 网络
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 5701
发表评论
登录后再发表评论!