还记得之前贴过一个ubb代码变换为html格式的代码,前几日读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="(\)(\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

正版的转换程序流程,节选自freeware版本的ubb社区论坛,可到 http://www.ultimatebb.com/ 免费下载(Perl CGI方法)

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/(\)(\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);

}

学习培训Asp的朋友,绝不能放弃对CGI的学习培训,尤其是一些外国人的CGI程序流程,看后对大家的asp程序编写会出现非常大的启迪