SDCMS1.3读取摘要的代码为:
- <%=Content_Encode(t17)%>
通过查找Content_Encode函数得知:
Content_Encode函数只是去除了"<"和“>”,并没有去除其他标签!
- '=====================================
- '转换内容,防止意外
- '=====================================
- Function Content_Encode(ByVal t0)
- IF IsNull(t0) Or Len(t0)=0 Then
- Content_Encode=""
- Else
- Content_Encode=Replace(t0,"<","<")
- Content_Encode=Replace(Content_Encode,">",">")
- End IF
- End Function
下边再看自动提取摘要的代码是:代码大概在sdcms_info.asp的477~481行
分析Re_html函数,发现Re_html函数竟然是去除html的函数,可是他并没有完全去除(在小也是小白,具体看不太懂为什么没有去除),所以我们只需要重新加一个去除html格式的函数就可以了:
- IF Len(O6)=0 Or IsNull(O6) Then
- Rs(17)=CloseHtml(CutStr(Content_Decode(Re_Html(t11)),Sdcms_Length))
- Else
- Rs(17)=CloseHtml(Content_Decode(O6))
- End IF
解决方法:
(1)打开inc/functions.asp文件,增加新函数:
- Function RemoveHTML(strHTML)
- Dim objRegExp, Match, Matches
- Set objRegExp = New Regexp
- objRegExp.IgnoreCase = True
- objRegExp.Global = True
- '取闭合的<>
- objRegExp.Pattern = "<.+?>"
- '进行匹配
- Set Matches=objRegExp.Execute(strHTML)
- ' 遍历匹配集合,并替换掉匹配的项目
- For Each Match in Matches
- strHtml=Replace(strHTML,Match.Value,"")
- Next
- '/////////////////////////////////////////////////////////
- objRegExp.Pattern = "<.+?>"
- '进行匹配
- Set Matches=objRegExp.Execute(strHTML)
- ' 遍历匹配集合,并替换掉匹配的项目
- For Each Match in Matches
- strHtml=Replace(strHTML,Match.Value,"")
- Next
- '//////////////////////////////////////////////////////////
- strHTML=replace(strHTML," ","")
- strHTML=replace(strHTML," ","")
- RemoveHTML=strHTML
- Set objRegExp = Nothing
- End Function
(2)返回sdcms_info.asp找到的477~481行
修改
改成:
- Rs(17)=CloseHtml(CutStr(Content_Decode(Re_Html(t11)),Sdcms_Length))
这样就可以完全去掉HTML代码了,其他的页面可以按照这样的办法修改!
- Rs(17)=CloseHtml(CutStr(Content_Decode(RemoveHTML(t11)),Sdcms_Length))
如果想修改提取的长度,可以直接把Sdcms_Length改成你的数字,也可以在后台,系统设置里边修改,默认500。
(注:新函数会去掉所有的html代码,如果你的正文中也出现了html代码,可能会误杀,具体没有测试,请广大网友测试过的,可以留言回复一下!)
文章点评