ubb代码的简单实现

作者:jjx 来源: 日期:2002-6-5
UBB的实现原理无外乎字符串的查找和替换。因此Microosft Script Engine 5.0版本的
RegExp(正则表达式对象)是个不错的选择,但我想由于ISP的关系,我现在这个网站(信诺
立)就还不支持Microsoft Script Engine 5.0。所以下面这个子程序可能更适合大家一
些。 
  □Convert-实现ubb标记的查找和替换,当前实现了b/url/url1(在一个新窗口中打开链
接)/#/hr等多个标记,大家可以自己增加其他标记。 
  □调用方法 
  if convert(text,"url")=false then 
   `url标记错误处理 
  end if 
  □convert函数代码 
  Function Convert(ByRef intext, UBB) 
   `变量定义 
   Dim intStart 
   Dim intStartPostion 
   Dim intEndPostion 
   Dim strStartUBB 
   Dim strEndUBB 
   Dim intStartUBBLen 
   Dim intEndUBBLen 
   Dim intStrLen 
   intStrLen = Len(intext) 
   Dim strContent 
   Dim strFinish 
   `彩色标记 
   Dim strColor 
   `#号ubb开始标记的结束]位置 
   Dim intJHEndPostion 
   intStart = 1 
   If UBB = "#" Then 
   strStartUBB = "[" & "#" 
   Else 
   strStartUBB = "[" & UBB & "]" 
   End If 
   If UBB = "hr" Then 
   intStartPostion = InStr(intStart, intext, strStartUBB, 1) 
   do until intStartPostion=0 
   intext = Replace(intext, strStartUBB, "<hr size=1>", 1, -1, 1) 
   intStart=intStartPostion+len(strStartUBB) 
   intStartPostion = InStr(intStart, intext,strStartUBB, 1) 
   
   Loop 
   convert=true 
   exit function 
   End If 
   
   strEndUBB = "[/" & UBB & "]" 
   intStartUBBLen = Len(strStartUBB) 
   intEndUBBLen = Len(strEndUBB) 
   
   intStartPostion = InStr(intStart, intext, strStartUBB, 1) 
   Do Until intStartPostion = 0 
   `找匹配UBB 
   intEndPostion = InStr(intStart, intext, strEndUBB, 1) 
   If intEndPostion = 0 Then 
   Convert = False 
   Exit Function 
   Else 
   `取中间字符串 
   If UBB = "#" Then 
   `#号特殊处理 
   intJHEndPostion = InStr(intStartPostion, intext, "]") 
   If intJHEndPostion = 0 Then 
   Convert = False 
   Exit Function 
   End If 
   strColor = Mid(intext, intStartPostion + intStartUBBLen, intJHEndPostion - 
intStartPostion - intStartUBBLen) 
   strContent = Mid(intext, intStartPostion + intStartUBBLen + Len(strColor) + 
1, intEndPostion - intStartPostion - intStartUBBLen - Len(strColor) - 1) 
   Else 
   strContent = Mid(intext, intStartPostion + intStartUBBLen, (intEndPostion - 
intStartPostion - intStartUBBLen)) 
   End If 
   `UBB处理 
   Select Case Ucase(UBB) 
   `黑体 
   Case "B" 
   strFinish = "<b>" & strContent & "</b>" 
   Case "URL" 
   strFinish = "<a href=" & strContent & ">" & strContent & "</a>" 
   `你可以增加其他标记 
   Case "URL1" 
   `在另一个窗口打开 
   strFinish = "<a href=" & strContent & " target=_blank>" & strContent 
& "</a>" 
   Case "IMG" 
   strFinish = "<img src=" & strContent & ">" 
   Case "#" 
   strFinish = "<font color=#" & strColor & ">" & strContent & "</font>" 
   End Select 
   `替换 
   If UBB = "#" Then 
   intext = Replace(intext, strStartUBB & strColor & "]" & strContent & 
strEndUBB, strFinish, 1, -1, 1) 
   Else 
   intext = Replace(intext, strStartUBB & strContent & strEndUBB, strFinish, 
1, -1, 1) 
   End If 
   End If 
   intStart = intStartPostion + 1 
   intStartPostion = InStr(intStart, intext, strStartUBB, 1) 
   Loop 
   Convert = True 
  End Function 
相关文章