烟雨江南

首页 » 社区&站务 » 『 江南站务 』 » 『 江南工作室 』 » = 技术工作室 = » Sp2自行解决关闭HTML下字体大小,颜色,背景色无效的办法[5/10修订]
霸王枪 - 2004-5-11 19:06:00

呵呵,我解决关闭HTML模式下改变段落格式,字体大小,颜色,背景色的办法~~~纯粹个人救急解决方法,应该是完全可以兼容动网以后的解决办法的,……不过我也不能100%保证,但是~这是我认为最佳的解决办法~~抛块砖~等兄弟砸玉~


嗯,拜托有用,但是无效的朋友回个复,好像正则表达式在某些服务器上面过滤得结果会有偏差~导致失败……


最后修改于5/10 15:34,呵呵,经过天的测试,好像米什么问题了~~~提供了05/04升级包里面的savepost.asp和Dv_ubbcode.asp修改好好的文件,本身米修改这两个文件的朋友,可以直接下载后覆盖(请注意备份)


点击浏览该文件
已经修改好的05/04文件


5/10:之前陆续修订的一些bug,和N多人呼唤!?的粘贴地址支持……最近忙到扑街,一起测试吧~~~有Bug请Pm我~~~~3/22:加上直接拷贝粘贴图片的支持,基本上,我自己和社区里面的朋友已经从不同地方拷贝了不下300张测试,应该是米问题的……当然我是不会负任何责任的~呵呵,有问题的话欢迎一起解决就是了

新加:简易的粘贴地址链接支持 <A Href=*****>XXXX</A>不会给过滤掉[05/10]
修正:某些情况下font标签过滤错误[05/10]
修正:引用或含有多个font标签时错误
修正:sp1时期的引用贴出现[quote]XXXXX[/quote]


注意,为了可以正确显示,以下的[br]、[quote]$2[/quote]、[img]$5$6[/img]、[img]$3[/img]中的[]是全角的,请自行更换回半角的[]


打开 SavePost.asp


把1140行左右的


'发贴时用,为了减少入库量
Function Html2Ubb(str)
If Str<>"" And Not IsNull(Str) Then
  Dim re,tmpstr
  Set re=new RegExp
  re.IgnoreCase =True
  re.Global=True
  re.Pattern = "(<br>)"
  Str = re.Replace(Str,"[br]")
  If Dvbbs.Board_Setting(5)="0" Then
  '先去掉标记中的换行
  re.Pattern="(<(i|b|p)>)"
  Str=re.Replace(Str,"[$2]")
  re.Pattern="(<(\/i|\/b|\/p)>)"
  Str=re.Replace(Str,"[$2]")
  re.Pattern="(>)("&vbNewLine&")(<)"
  Str=re.Replace(Str,"$1$3")
  re.Pattern="(>)("&vbNewLine&vbNewLine&")(<)"
  Str=re.Replace(Str,"$1$3")
  re.Pattern="(<DIV class=quote>)((.|\n)*)(<\/div>)"
  Str=re.Replace(Str,"[quote]$2[/quote]")
  re.Pattern="<(.[^>]*)>"
  Str=re.Replace(Str,"")
  re.Pattern="(\[(i|b|p)\])"
  Str=re.Replace(Str,"<$2>")
  re.Pattern="(\[(\/i|\/b|\/p)\])"
  Str=re.Replace(Str,"<$2>")
  End If
  Str = Replace(Str, "[br]", CHR(13) & CHR(10))
  re.Pattern = "( )"
  Str = re.Replace(Str,Chr(9))
  re.Pattern = "(<STRONG>)"
  Str = re.Replace(Str,"<b>")
  re.Pattern = "(<\/STRONG>)"
  Str = re.Replace(Str,"</b>")
  re.Pattern ="(<TBODY>)"
  Str = re.Replace(Str,"")
  re.Pattern ="(<\/TBODY>)"
  Str = re.Replace(Str,"")
  Set Re=Nothing
  Html2Ubb = Str
Else
  Html2Ubb = ""
End If
End Function

改为


'发贴时用,为了减少入库量
Function Html2Ubb(str)
If Str<>"" And Not IsNull(Str) Then
  Dim re,tmpstr
  Set re=new RegExp
  re.IgnoreCase =True
  re.Global=True
  re.Pattern = "(<br>)"
  Str = re.Replace(Str,"[br]")
  re.Pattern = "( )"
  Str = re.Replace(Str,Chr(9))
  re.Pattern = "(<STRONG>)"
  Str = re.Replace(Str,"<b>")
  re.Pattern = "(<\/STRONG>)"
  Str = re.Replace(Str,"</b>")
  re.Pattern ="(<TBODY>)"
  Str = re.Replace(Str,"")
  re.Pattern ="(<\/TBODY>)"
  Str = re.Replace(Str,"")
  re.Pattern = "(<EM>)"
  Str = re.Replace(Str,"<i>")
  re.Pattern = "(<\/EM>)"
  Str = re.Replace(Str,"</i>")
  IF Dvbbs.Board_Setting(5)="0" Then
  '先去掉标记中的换行
  Re.Pattern="(>)("&vbNewLine&")(<)"
  Str = Re.Replace(Str,"$1$3")
  Re.Pattern="(>)("&vbNewLine&vbNewLine&")(<)"
  Str = Re.Replace(Str,"$1$3")
  Re.Pattern = "(<H([0-9]*)>)"
  Str = Re.Replace(Str,"[H$2]")
  Re.Pattern = "(<\/H([0-9]*)>)"
  Str = Re.Replace(Str,"[/H$2]")
  Re.Pattern = "(<(font)(.[^>]*)>)"
  Str = Re.Replace(Str,"x01font$3x02")
  Re.Pattern = "(<(a)(.[^>]*)>)"
  Str = Re.Replace(Str,"x01a$3x02")
  Re.Pattern = "(<(img)(.[^\[]*)(src=)(.[^\[]*)(.jpg|.gif|.png|.jpeg)(.[^\[]*)>)"
  Str = Re.Replace(Str,"[img]$5$6[/img]")
  Re.Pattern = "(\[img\]("")(.[^\[]*)\[\/img\])"
  Str = Re.Replace(Str,"[img]$3[/img]")
  Re.Pattern="(<(i|b|p|u|pre|address|strike|sup|sub)>)"
  Str = Re.Replace(Str,"[$2]")
  Re.Pattern="(<(\/i|\/b|\/p|\/u|\/pre|\/address|\/font|\/strike|\/sup|\/sub)>)"
  Str = Re.Replace(Str,"[$2]")
  Re.Pattern="(<DIV class=quote>)((.|\n)*)(<\/div>)"
  Str = Re.Replace(Str,"[quote]$2[/quote]")
  Re.Pattern="<(.[^>]*)>"
  Str = Re.Replace(Str,"")
  Str=replace(Str,"x02",">")
  Str=replace(Str,"x01","<")
  Re.Pattern = "(\[H([0-9]*)\])"
  Str = Re.Replace(Str,"<H$2>")
  Re.Pattern = "(\[\/H([0-9]*)\])"
  Str = Re.Replace(Str,"</H$2>")
  Re.Pattern="(\[(i|b|p|u|pre|address|strike|sup|sub)\])"
  Str = Re.Replace(Str,"<$2>")
  Re.Pattern="(\[(\/i|\/b|\/p|\/u|\/pre|\/address|\/font|\/strike|\/sup|\/sub|\/a)\])"
  Str = Re.Replace(Str,"<$2>")
  End IF
  Str = Replace(Str, "[br]", CHR(13) & CHR(10))
  Set Re=Nothing
  Html2Ubb = Str
Else
  Html2Ubb = ""
End If
End Function

再打开inc\Dv_ubbcode.asp

把大约48行开始的


  '如果论坛没开放HTML脚本,拦截所有标记和脚本
  If Dvbbs.Board_Setting(5)="0" Then
  re.Pattern="(<(i|b|p)>)"
  s=re.Replace(s,"[$2]")
  re.Pattern="(<(\/i|\/b|\/p)>)"
  s=re.Replace(s,"[$2]")
  re.Pattern="(<DIV class=quote>)((.|\n)*)(<\/div>)"
  s=re.Replace(s,"[quote]$2[/quote]")
  '先去掉标记中的换行
  re.Pattern="(>)("&vbNewLine&")(<)"
  s=re.Replace(s,"$1$3")
  re.Pattern="(>)("&vbNewLine&vbNewLine&")(<)"
  s=re.Replace(s,"$1$3")
  re.Pattern="<(.[^>]*)>"
  s=re.Replace(s,"")
  re.Pattern="(\[(i|b|p)\])"
  S=re.Replace(S,"<$2>")
  re.Pattern="(\[(\/i|\/b|\/p)\])"
  S=re.Replace(s,"<$2>")
  If Dv_FilterJS2(s)Then
    re.Pattern="\[(br)\]"
    s=re.Replace(s,"<$1>")
    re.Pattern = "( )"
    s = re.Replace(s,Chr(9))
    re.Pattern = "(<br>)"
    s = re.Replace(s,vbNewLine)
    re.Pattern = "(<p>)"
    s = re.Replace(s,"")
    re.Pattern = "(<\/p>)"
    s = re.Replace(s,vbNewLine)
    s=server.htmlencode(s)
    s="<form name=""scode"&replyid&""" method=""post"" action=""""><TABLE class=tableborder2 cellSpacing=1 cellPadding=3 width=""100%"" align=center border=0><TR><TH height=22>以下内容含脚本,或可能导致页面不正常的代码</TH></TR><TR><TD class=tablebody1 align=middle width=""98%""><TEXTAREA id=CodeText style=""BORDER-RIGHT: 1px dotted; BORDER-TOP: 1px dotted; OVERFLOW-Y: visible; OVERFLOW: visible; BORDER-LEFT: 1px dotted; WIDTH: 98%; COLOR: #000000; BORDER-BOTTOM: 1px dotted"" rows=20 cols=120>"&s&"</TEXTAREA></TD></TR><TR><TD class=tablebody2 align=middle width=""98%""><b>说明:</b>上面显示的是代码内容。您可以先检查过代码没问题,或修改之后再运行.</td></tr><TR><TD class=tablebody1 align=middle width=""98%""><input type=""button"" name=""run"" value=""运行代码"" onclick=""Dvbbs_ViewCode("&replyid&");""></TD></TR></TABLE></form>"
    s = Replace(s, vbNewLine, "")
    s = Replace(s, CHR(10), "")
    s = Replace(s, CHR(13), "")
    Dv_UbbCode=s
    Exit Function
  End If
  Else

改为


'如果论坛没开放HTML脚本,拦截所有标记和脚本
  If Dvbbs.Board_Setting(5)="0" Then
      '转换标题
  Re.Pattern = "(<H([0-9]*)>)"
  S = Re.Replace(S,"[H$2]")
  Re.Pattern = "(<\/H([0-9]*)>)"
  S = Re.Replace(S,"[/H$2]")
  Re.Pattern = "(<(font)(.[^>]*)>)"
  S = Re.Replace(S,"x01font$3x02")
  Re.Pattern = "(<(a)(.[^>]*)>)"
  S = Re.Replace(S,"x01a$3x02")
  '过滤转换img标记
  Re.Pattern = "(<(img)(.[^\[]*)(src=)(.[^\[]*)(.jpg|.gif|.png|.jpeg)(.[^\[]*)>)"
  S = Re.Replace(S,"[img]$5$6[/img]")
  Re.Pattern = "(\[img\]("")(.[^\[]*)\[\/img\])"
  S = Re.Replace(S,"[img]$3[/img]")
  IF InStr(Ubblists,",1,") =< 0 Then
    IF InStr(Lcase(s),"[/IMG]")>0 Then Ubblists = Ubblists & "1,"
  End IF
  Re.Pattern="(<(i|b|p|u|pre|address|strike|sup|sub)>)"
  S = Re.Replace(S,"[$2]")
  re.Pattern="(<(\/i|\/b|\/p|\/u|\/font|\/pre|\/address|\/strike|\/sup|\/sub)>)"
  S = Re.Replace(S,"[$2]")
  re.Pattern="(<DIV class=quote>)((.|\n)*)(<\/div>)"
  S = Re.Replace(s,"[quote]$2[/quote]")
  IF InStr(Ubblists,",41,") =< 0 Then
    IF InStr(Lcase(s),"[/quote]")>0 Then Ubblists = Ubblists & "28,"
  End IF

  '先去掉标记中的换行
  re.Pattern="(>)("&vbNewLine&")(<)"
  s=re.Replace(s,"$1$3")
  re.Pattern="(>)("&vbNewLine&vbNewLine&")(<)"
  s=re.Replace(s,"$1$3")
  re.Pattern="<(.[^>]*)>"
  s=re.Replace(s,"")
  '切换回HTML代码
  '转换标题
  Re.Pattern = "(\[H([0-9]*)\])"
  S = Re.Replace(S,"<H$2>")
  Re.Pattern = "(\[\/H([0-9]*)\])"
  S = Re.Replace(S,"</H$2>")
 
  S=replace(S,"x02",">")
  S=replace(S,"x01","<")
 
  Re.Pattern="(\[(i|b|p|u|pre|address|strike|sup|sub)\])"
  S = Re.Replace(S,"<$2>")
  Re.Pattern="(\[(\/i|\/b|\/p|\/u|\/pre|\/address|\/font|\/strike|\/sup|\/sub|\/a)\])"
  S = Re.Replace(s,"<$2>")
  If Dv_FilterJS2(s)Then
    re.Pattern="\[(br)\]"
    s=re.Replace(s,"<$1>")
    re.Pattern = "( )"
    s = re.Replace(s,Chr(9))
    re.Pattern = "(<br>)"
    s = re.Replace(s,vbNewLine)
    re.Pattern = "(<p>)"
    s = re.Replace(s,"")
    re.Pattern = "(<\/p>)"
    s = re.Replace(s,vbNewLine)
    s=server.htmlencode(s)
    s="<form name=""scode"&replyid&""" method=""post"" action=""""><TABLE class=tableborder2 cellSpacing=1 cellPadding=3 width=""100%"" align=center border=0><TR><TH height=22>以下内容含脚本,或可能导致页面不正常的代码</TH></TR><TR><TD class=tablebody1 align=middle width=""98%""><TEXTAREA id=CodeText style=""BORDER-RIGHT: 1px dotted; BORDER-TOP: 1px dotted; OVERFLOW-Y: visible; OVERFLOW: visible; BORDER-LEFT: 1px dotted; WIDTH: 98%; COLOR: #000000; BORDER-BOTTOM: 1px dotted"" rows=20 cols=120>"&s&"</TEXTAREA></TD></TR><TR><TD class=tablebody2 align=middle width=""98%""><b>说明:</b>上面显示的是代码内容。您可以先检查过代码没问题,或修改之后再运行.</td></tr><TR><TD class=tablebody1 align=middle width=""98%""><input type=""button"" name=""run"" value=""运行代码"" onclick=""Dvbbs_ViewCode("&replyid&");""></TD></TR></TABLE></form>"
    s = Replace(s, vbNewLine, "")
    s = Replace(s, CHR(10), "")
    s = Replace(s, CHR(13), "")
    Dv_UbbCode=s
    Exit Function
  End If
  Else
1
查看完整版本: Sp2自行解决关闭HTML下字体大小,颜色,背景色无效的办法[5/10修订]