主题:  UBB嵌套的问题

laohu

职务:普通成员
等级:1
金币:0.0
发贴:40
注册:2000/12/16 21:13:20
#12002/12/2 11:11:26
各位,我从论坛中下载了一个UBB代码,但加到自己的发布系统中,就出现了不能UBB嵌套的问题,例如:给文字加粗后,再居中就不行。
文字

请问该如何解决?



laohu

职务:普通成员
等级:1
金币:0.0
发贴:40
注册:2000/12/16 21:13:20
#22002/12/2 11:13:40
奇怪,这里的UBB就可以,为什么呢?



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#32002/12/2 13:10:37
可能你的代码不完善吧



laohu

职务:普通成员
等级:1
金币:0.0
发贴:40
注册:2000/12/16 21:13:20
#42002/12/2 15:56:23
请大家帮忙看看代码,多谢。

<%
rem ------------ubb代码
function ChkBadWords(fString)
bwords = split(BadWords, "|")
for i = 0 to ubound(bwords)
fString = Replace(fString, bwords(i), string(len(bwords(i)),"*"))
next
ChkBadWords = fString
end function

function doCode(fString, fOTag, fCTag, fROTag, fRCTag)
fOTagPos = Instr(1, fString, fOTag, 1)
fCTagPos = Instr(1, fString, fCTag, 1)
while (fCTagPos > 0 and fOTagPos > 0)
fString = replace(fString, fOTag, fROTag, 1, 1, 1)
fString = replace(fString, fCTag, fRCTag, 1, 1, 1)
fOTagPos = Instr(1, fString, fOTag, 1)
fCTagPos = Instr(1, fString, fCTag, 1)
wend
doCode = fString
end function

function HTMLEncode(fString)

fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")

fString = Replace(fString, CHR(13), "")
fString = Replace(fString, CHR(10) & CHR(10), "

")
fString = Replace(fString, CHR(10), "
")
HTMLEncode = fString
end function

function HTMLDecode(fString)

fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")

fString = Replace(fString, "", CHR(13))
fString = Replace(fString, "

", CHR(10) & CHR(10))
fString = Replace(fString, "
", CHR(10))
HTMLDecode = fString
end function

function HTMLDecode1(fString)

fString = replace(fString, ">", ">")
fString = replace(fString, "<", "<")
fString = Replace(fString, "", CHR(13))
fString = Replace(fString, "

", CHR(10) & CHR(10))
fString = Replace(fString, "
", CHR(10))
HTMLDecode1 = fString
end function


function UBBCode(strContent)
if strAllowHTML <> 1 then
strContent = HTMLEncode(strContent)
end if
dim re
Set re=new RegExp
re.IgnoreCase =true
re.Global=True
    re.Pattern="(\[IMG\])(.[^\]]*)(\[\/IMG\])"
    strContent=re.Replace(strContent,"")
re.Pattern="\[DIR=*([0-9]*),*([0-9]*)\](.[^\]]*)\[\/DIR]"
strContent=re.Replace(strContent,"")
re.Pattern="\[QT=*([0-9]*),*([0-9]*)\](.[^\]]*)\[\/QT]"
strContent=re.Replace(strContent,"")
    re.Pattern="\[MP=*([0-9]*),*([0-9]*)\](.[^\]]*)\[\/MP]"
    strContent=re.Replace(strContent,"")
    re.Pattern="\[RM=*([0-9]*),*([0-9]*)\](.[^\]]*)\[\/RM]"
    strContent=re.Replace(strContent,"
")
    re.Pattern="(\[FLASH\])(.[^\]]*)(\[\/FLASH\])"
    strContent= re.Replace(strContent,"$2")

re.Pattern="(\[URL\])(http:\/\/.[^\]]*)(\[\/URL\])"
strContent= re.Replace(strContent,"$2")
re.Pattern="(\[URL\])(.[^\]]*)(\[\/URL\])"
strContent= re.Replace(strContent,"$2")

re.Pattern="(\[URL=(http:\/\/.[^\]]*)\])(.[^\]]*)(\[\/URL\])"
strContent= re.Replace(strContent,"$3")
re.Pattern="(\[URL=(.[^\]]*)\])(.[^\]]*)(\[\/URL\])"
strContent= re.Replace(strContent,"$3")

re.Pattern="(\[EMAIL\])(.[^\]]*)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"$2")
re.Pattern="(\[EMAIL=(.[^\]]*)\])(.[^\]]*)(\[\/EMAIL\])"
strContent= re.Replace(strContent,"$3")

    re.Pattern = "^(http://[A-Za-z0-9\./=\?%\-&_~`@']+)"
    strContent = re.Replace(strContent,"$1")
    re.Pattern = "(http://[A-Za-z0-9\./=\?%\-&_~`@']+)$"
    strContent = re.Replace(strContent,"$1")
    re.Pattern = "[^>=""](http://[A-Za-z0-9\.\/=\?%\-&_~`@']+)"
    strContent = re.Replace(strContent,"$1")

re.Pattern="(\[em(.[^\]]*)\])"
rem strContent=re.Replace(strContent,"")

re.Pattern="(\[HTML\])(.[^\]]*)(\[\/HTML\])"
strContent=re.Replace(strContent,"

以下内容为程序代码:
$2
")
re.Pattern="(\[code\])(.[^\]]*)(\[\/code\])"
strContent=re.Replace(strContent,"
以下内容为程序代码:
$2
")


re.Pattern="(\[QUOTE\])(.[^\]]*)(\[\/QUOTE\])"
strContent=re.Replace(strContent,"
$2

")
re.Pattern="(\[fly\])(.*)(\[\/fly\])"
strContent=re.Replace(strContent,"$2")
re.Pattern="(\[move\])(.*)(\[\/move\])"
strContent=re.Replace(strContent,"$2")    
re.Pattern="\[GLOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\]]*)\[\/GLOW]"
strContent=re.Replace(strContent,"$4
")
re.Pattern="\[SHADOW=*([0-9]*),*(#*[a-z0-9]*),*([0-9]*)\](.[^\]]*)\[\/SHADOW]"
strContent=re.Replace(strContent,"$4
")
'--------------------------------------------------
strContent = doCode(strContent, "
    ", "
", "
    ", "
")
strContent = doCode(strContent, "
    ", "
", "
    ", "
")
strContent = doCode(strContent, "
    ", "
", "
    ", "
")
strContent = doCode(strContent, "
  • ", "[/*]", "
  • ", "
  • ")
    '--------------------------------------------------
    re.Pattern="(\[face=(.[^\]]*)\])(.*)(\[\/face\])"
    strContent=re.Replace(strContent,"$3")

    re.Pattern="(\[i\])(.[^\]]*)(\[\/i\])"
    strContent=re.Replace(strContent,"$2")
    re.Pattern="(\[u\])(.[^\]]*)(\[\/u\])"
    strContent=re.Replace(strContent,"$2")
    re.Pattern="(\[b\])(.[^\]]*)(\[\/b\])"
    strContent=re.Replace(strContent,"$2")
    ' re.Pattern="\[align=(.[^\]]*)\](.*)\[\/align\]"
    ' strContent=re.Replace(strContent,"
    $2
    ")
    re.Pattern="(\[center\])(.[^\]]*)(\[\/center\])"
    strContent=re.Replace(strContent,"
    $2
    ")

    re.Pattern="\[color=(.[^\]]*)\](.[^\[]*)\[\/color\]"
    strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=1\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=2\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=3\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=4\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=5\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=6\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")
        re.Pattern="(\[size=7\])(.[^\[]*)(\[\/size\])"
        strContent=re.Replace(strContent,"$2")

    strContent=ChkBadWords(strContent)

    set re=Nothing
    UBBCode=strContent
    end function

    public function translate(sourceStr,fieldStr)
    rem 处理逻辑表达式的转化问题
    dim sourceList
    dim resultStr
    dim i,j
    if instr(sourceStr," ")>0 then
    dim isOperator
    isOperator = true
    sourceList=split(sourceStr)
    '--------------------------------------------------------
    rem Response.Write "num:" & cstr(ubound(sourceList)) & "
    "
    for i = 0 to ubound(sourceList)
    rem Response.Write i
    Select Case ucase(sourceList(i))
    Case "AND","&","和","与"
    resultStr=resultStr & " and "
    isOperator = true
    Case "OR","|","或"
    resultStr=resultStr & " or "
    isOperator = true
    Case "NOT","!","非","!","!"
    resultStr=resultStr & " not "
    isOperator = true
    Case "(","(","("
    resultStr=resultStr & " ( "
    isOperator = true
    Case ")",")",")"
    resultStr=resultStr & " ) "
    isOperator = true
    Case Else
    if sourceList(i)<>"" then
    if not isOperator then resultStr=resultStr & " and "
    if inStr(sourceList(i),"%") > 0 then
    resultStr=resultStr&" "&fieldStr& " like '" & replace(sourceList(i),"'","''") & "' "
    else
    resultStr=resultStr&" "&fieldStr& " like '%" & replace(sourceList(i),"'","''") & "%' "
    end if
    isOperator=false
    End if
    End Select
    rem Response.write resultStr+"
    "
    next
    translate=resultStr
    else '单条件
    if inStr(sourcestr,"%") > 0 then
    translate=" " & fieldStr & " like '" & replace(sourceStr,"'","''") &"' "
    else
    translate=" " & fieldStr & " like '%" & replace(sourceStr,"'","''") &"%' "
    End if
    rem 前后各加一个空格,免得连sql时忘了加,而出错。
    end if
    end function
    %>



    udfans

    职务:普通成员
    等级:2
    金币:0.0
    发贴:417
    注册:2002/2/2 12:32:55
    #52002/12/2 23:44:15
    先加粗再居中



    laohu

    职务:普通成员
    等级:1
    金币:0.0
    发贴:40
    注册:2000/12/16 21:13:20
    #62002/12/3 8:30:54
    能告诉我是为什么吗?



    janssenkm

    职务:普通成员
    等级:1
    金币:0.0
    发贴:23
    注册:2001/4/1 1:02:44
    #72002/12/5 0:02:52
    那么多,看不完。