一个新版本的ubb转化程序(转)

ubb|程序

这段代码将用户输入的ubb代码转化为html格式,注意,需要Script Engine 5.0的支持(使用了RegExp对象)

注:pattern中使用()将知道regexp记忆搜索到的值,$1是第一个(),其余类推。但$2的语法并不被5.0版本的vbscript.dll所支持,我检查了自己机器上的版本(安装过ie 5.5),发现vbscript.dll的版本为5.50.4629,最后修改日期为12月25日。该版本支持$1之类的语法,这个简单的改进使regexp的功能逐渐与perl的正则表达式靠近

function UBBCode(strContent)

    dim objRegExp
    Set objRegExp=new RegExp
    objRegExp.IgnoreCase =true
    objRegExp.Global=True
    'url
    objRegExp.Pattern="(\[URL\])(http:\/\/\S+?)(\[\/URL\])"
    strContent= objRegExp.Replace(strContent,"<A HREF=""$2""
TARGET=_blank>$2</A>")
    objRegExp.Pattern="(\[URL\])(\S+?)(\[\/URL\])"
    strContent= objRegExp.Replace(strContent,"<A HREF=""http://$2""
TARGET=_blank>$2</A>")
    'email
    objRegExp.Pattern="(\[EMAIL\])(\S+\@\S+?)(\[\/EMAIL\])"
    strContent= objRegExp.Replace(strContent,"<A
HREF=""mailto:$2"">$2</A>")

    objRegExp.Pattern="(\[IMG\])(\S+?)(\[\/IMG\])"
    strContent=objRegExp.Replace(strContent,"<IMG SRC=""$2"">")

    objRegExp.Pattern="(\[QUOTE\])(.+?)(\[\/QUOTE\])"
    strContent=objRegExp.Replace(strContent,"<BLOCKQUOTE><font size=1
face=""Verdana, Arial"">quote:</font><HR>$2<HR></BLOCKQUOTE>")

    objRegExp.Pattern="(\[i\])(.+?)(\[\/i\])"
    strContent=objRegExp.Replace(strContent,"<i>$2</i>")

    objRegExp.Pattern="(\[b\])(.+?)(\[\/b\])"
    strContent=objRegExp.Replace(strContent,"<b>$2</b>")
    set objRegExp=Nothing
    UBBCode=strContent
end function
=-=====================
sub UBBCode {
my $ThePost = shift;
$ThePost =~ s/(\[URL\])(http:\/\/\S+?)(\[\/URL\])/ <A HREF="$2"
TARGET=_blank>$2<\/A> /isg;
$ThePost =~ s/(\[URL\])(\S+?)(\[\/URL\])/ <A HREF="http:\/\/$2"
TARGET=_blank>$2<\/A> /isg;
$ThePost =~ s/(\[EMAIL\])(\S+\@\S+?)(\[\/EMAIL\])/ <A
HREF="mailto:$2">$2<\/A> /isg;
if (($UBBImages eq "ON") && ($OverrideImages ne "yes")) {
$ThePost =~ s/(\[IMG\])(\S+?)(\[\/IMG\])/ <IMG SRC="$2"> /isg;
}

$ThePost =~ s/(\[QUOTE\])(.+?)(\[\/QUOTE\])/ <BLOCKQUOTE><font size="1"
face="Verdana, Arial">quote:<\/font><HR>$2<HR><\/BLOCKQUOTE>/isg;
$ThePost =~ s/(\[i\])(.+?)(\[\/i\])/<i>$2<\/i>/isg;
$ThePost =~ s/(\[b\])(.+?)(\[\/b\])/<b>$2<\/b>/isg;
return ($ThePost);
}

时间: 2024-09-30 12:42:18

一个新版本的ubb转化程序(转)的相关文章

一个新版本的ubb转化程序

ubb|程序 记得以前贴过一个ubb代码转换为html格式的代码,前几天读ubb的源代码.所以有了这个新的版本.注意,这个版本可能还不能正常使用,详细见注.这段代码将用户输入的ubb代码转化为html格式,注意,需要Script Engine 5.0的支持(使用了RegExp对象) 注:pattern中使用()将知道regexp记忆搜索到的值,$1是第一个(),其余类推.但$2的语法并不被5.0版本的vbscript.dll所支持,我检查了自己机器上的版本(安装过ie 5.5),发现vbscri

一个新版本的ubb转换代码一文有些错误,编辑过后的版本在这里

ubb|错误|转换 http://202.103.176.81/erun/jiangjianxiao/bbs/newsdetail.asp?id=338

一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)

原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版) 上一篇:一个完整的安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 转载时请务必保留转载出处和由艾泽拉斯之海洋女神出品的字样:如需刊登,请与作者联系.little_fairycat@126.com. 第三部分:其他 1. 修改显示界面的风格 Installshield 原始安装界面我始终觉得很丑,幸好Installscript 是可以不用写代码就可以改界面风格的.

实例-winform程序已经开启。如果通过从另一台电脑获取新版本,让winform程序自动升级安装?

问题描述 winform程序已经开启.如果通过从另一台电脑获取新版本,让winform程序自动升级安装? winform程序如何实现自动安装升级?不需要人工去控制升级.就是一台pc机已经在运行winform程序了,怎么通过从另一台机子获取新版本,然后先关闭原来的winform程序后再实现安装新版本.自动升级不需要人工再去操作.在网上看了好多实例,发现都不怎么好用,关键有些技术也没看懂.哪位大神会的话,请教下新人.谢谢.没有分给大家,真是不好意思啊.都用完了! 解决方案 自动升级和人工升级没有区别

如何制作一个HTML5的iPhone应用程序

在过去的一年里,你是不是很沮丧,对于所有的使用Objective-C开发iPhone程序的开发者而言,日子都不那么好过,你是不是为了学习开发iPhone应用程序曾经硬着头皮去读着那生涩难懂的学习教程,事实是Objective-C是一门类似C语言的语言,这也就绝定了它不是那么容易学习. 我不是劝你去放弃学习Objective-C,因为世上无难事,只怕有心人.但是条条大路通罗马,也许你转换下思路你可以用另一种方法达到相同的目的. 你可以制作一个原生的iPhone应用程序去模仿其他的程序,多半上它也许

c++-一个关于递归的小程序,理解不了其输出结果。。。。。

问题描述 一个关于递归的小程序,理解不了其输出结果..... 一个c++递归的小程序,其输出结果理解不了,请问这个递归的基例是"cout<<endl;"这个吗? void f(char ch){ if (('A' <= ch) && (ch <= 'H')){ f(ch - 1); cout << ch; } else cout << endl; } int main(){ f('C'); } 输出结果为: (空一行) A

cpu-求一个能计算圆周率的程序的源代码

问题描述 求一个能计算圆周率的程序的源代码 求一个能计算圆周率的程序的源代码,要求如下: 语言不限,要能计算精确度在100万位以上 要求计算100万位花费的时间(以Pentium 4 3.0GHz CPU为基准),不大于1分钟 计算结果可以保存在外部文件中 计算结果必须是十进制的 解决方案 计算结果可以保存在外部文件中 這樣寫文件比較慢.

源码-求教一个vc中float转化的问题!

问题描述 求教一个vc中float转化的问题! 50C buffer[0] = 0xc6;buffer[1] = 0xc3;buffer[2] = 0x90;buffer[3] = 0x30; 哪位大神能给了源码吗,谢谢了!!不会搞,急死了! 解决方案 请教一个VC问题 解决方案二: 数据的在计算机中不是用二进制表示的嘛,4位16进制就需要用32位二进制来表示:然后低字节存地位,高字节存高位,也就是传说中的"小端模式":这个不需要什么源码,理解到了就行:理解不到就去看书 解决方案三:

新官上任,转贴一篇:Java做一个最简单的通话程序

程序 Java中的网络编程是一个很重要的部分,也是其编程优越性的地方之一.在Java中有一个专门的Java.net类库来管理网络编程的有关方法. 下面先介绍在Java中怎样用socket进行客户与服务器通信.最后再介绍一个一个最简单的通话程序. 一.怎样用socket进行客户与服务器通信 在Java中用socket进行客户/服务器之间的通信编程.Socket是两个实体之间进行通信的有效端点.通过socket可以获得源IP地址和源端口.终点IP地址和终点端口.用户可以将多个socket连入同一个端