账号通
    

账号  

密码  

7689

查看

29

回复
主题:SQL语句:读取文章正文200字节写入文章导读 [收藏主题] 转到:  
gxda112 当前离线

194

主题

1

广播

2

粉丝
添加关注
级别:一年级

用户积分:4384 分
登录次数:295 次
注册时间:2007/7/30
最后登录:2016/12/15
gxda112 发表于:2007/12/25 10:26:00   | 显示全部帖子 查看该作者主题 楼主 
科汛智能建站系统

把下面代码保存成  get_intro.asp 传到根目录。运行后删除。

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Conn.asp"-->
<%'批量取内容的前N个字符做导读(前提是导读为空。如果想替换所有,请把红色部分删除就可以了。
dim strlen '截取的字符数
strlen=200 '默认200个字符(100个汉字)
sql="select Intro,ArticleContent from  KS_Article where rtrim(Intro)='' or isnull(Intro)"
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
if not (rs.bof and rs.eof) then
do while not rs.eof
rs(0)=GotTopic(LoseHtml(replace(rs(1),"[NextPage]","")),strlen)
rs.update
rs.movenext
loop
response.write "共批量替换了"&rs.recordcount&"条记录"
else
response.write "没有可替换的内容"
end if
rs.close
set rs=nothing
conn.close
set conn=nothing


Function LoseHtml(ContentStr)
      On Error Resume Next
   Dim TempLoseStr, regEx
   If ContentStr="" Or ContentStr=Null Then Exit Function
   TempLoseStr = CStr(ContentStr)
   Set regEx = New RegExp
   regEx.Pattern = "<\/*[^<>]*>"
   regEx.IgnoreCase = True
   regEx.Global = True
   TempLoseStr = regEx.Replace(TempLoseStr, "")
   LoseHtml = TempLoseStr
  End Function
  '*************************************************************************
'函数名:gotTopic
'作  用:截字符串,汉字一个算两个字符,英文算一个字符
'参  数:str   ----原字符串
'       strlen ----截取长度
'返回值:截取后的字符串
'*************************************************************************
  Function GotTopic(ByVal Str, ByVal strlen)
  If Str = "" OR IsNull(Str) Then GotTopic = "":Exit Function
  If strlen=0 Then GotTopic=Str:Exit Function
  Dim l, T, c, I, strTemp
  Str = Replace(Replace(Replace(Replace(Str, "&nbsp;", " "), "&quot;", Chr(34)), "&gt;", ">"), "&lt;", "<")
  l = Len(Str)
  T = 0
  strTemp = Str
  strlen = CLng(strlen)
  For I = 1 To l
   c = Abs(Asc(Mid(Str, I, 1)))
   If c > 255 Then
    T = T + 2
   Else
    T = T + 1
   End If
   If T >= strlen Then
    strTemp = Left(Str, I)
    Exit For
   End If
  Next
  If strTemp <> Str Then strTemp = strTemp
  GotTopic = Replace(Replace(Replace(Replace(strTemp, " ", "&nbsp;"), Chr(34), "&quot;"), ">", "&gt;"), "<", "&lt;")
End Function%>

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
gxda112 当前离线

194

主题

1

广播

2

粉丝
添加关注
级别:一年级

用户积分:4384 分
登录次数:295 次
注册时间:2007/7/30
最后登录:2016/12/15
gxda112 发表于:2007/12/25 10:36:00   | 显示全部帖子 查看该作者主题 沙发 
科汛在线考试系统(NET)

如果想替换所有文章系统模型,请用下面代码(如果想导读不为空也自动截取,请把红色去掉。)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="Conn.asp"-->
<%'批量取内容的前N个字符做导读
dim strlen '截取的字符数
strlen=200 '默认200个字符(100个汉字)
sql="select ChannelID,ChannelTable,ChannelName from KS_Channel where BasicType=1"
set mors=server.CreateObject("adodb.recordset")
mors.open sql,conn,1,1
if not (mors.bof and mors.eof) then
do while not mors.eof
sql="select Intro,ArticleContent from  "&mors(1)&" where TID in(select id from KS_Class where ChannelID="&mors(1)&") and rtrim(Intro)='' or isnull(Intro) "
set rs=server.CreateObject("adodb.recordset")
rs.open sql,conn,1,3
if not (rs.bof and rs.eof) then
do while not rs.eof
rs(0)=GotTopic(LoseHtml(replace(rs(1),"[NextPage]","")),strlen)
rs.update
rs.movenext
loop
response.write ""&mors(2)&"共批量替换了"&rs.recordcount&"条记录<br>"
else
response.write ""&mors(2)&"没有可替换的内容<br>"
end if
rs.close
set rs=nothing
mors.movenext
loop
response.write "批量替换完成"
else
response.write "没有可替换的内容<br>"
end if
conn.close
set conn=nothing


Function LoseHtml(ContentStr)
      On Error Resume Next
   Dim TempLoseStr, regEx
   If ContentStr="" Or ContentStr=Null Then Exit Function
   TempLoseStr = CStr(ContentStr)
   Set regEx = New RegExp
   regEx.Pattern = "<\/*[^<>]*>"
   regEx.IgnoreCase = True
   regEx.Global = True
   TempLoseStr = regEx.Replace(TempLoseStr, "")
   LoseHtml = TempLoseStr
  End Function
  '*************************************************************************
'函数名:gotTopic
'作  用:截字符串,汉字一个算两个字符,英文算一个字符
'参  数:str   ----原字符串
'       strlen ----截取长度
'返回值:截取后的字符串
'*************************************************************************
  Function GotTopic(ByVal Str, ByVal strlen)
  If Str = "" OR IsNull(Str) Then GotTopic = "":Exit Function
  If strlen=0 Then GotTopic=Str:Exit Function
  Dim l, T, c, I, strTemp
  Str = Replace(Replace(Replace(Replace(Str, "&nbsp;", " "), "&quot;", Chr(34)), "&gt;", ">"), "&lt;", "<")
  l = Len(Str)
  T = 0
  strTemp = Str
  strlen = CLng(strlen)
  For I = 1 To l
   c = Abs(Asc(Mid(Str, I, 1)))
   If c > 255 Then
    T = T + 2
   Else
    T = T + 1
   End If
   If T >= strlen Then
    strTemp = Left(Str, I)
    Exit For
   End If
  Next
  If strTemp <> Str Then strTemp = strTemp
  GotTopic = Replace(Replace(Replace(Replace(strTemp, " ", "&nbsp;"), Chr(34), "&quot;"), ">", "&gt;"), "<", "&lt;")
End Function%>


[此贴子已经被作者于2007-12-25 10:40:17编辑过]

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行1.25586秒 powered by KesionCMS 9.0