[此贴子已经被作者于2005-10-6 14:17:34编辑过]
主要就用到下面的技术 <% function gotTopic(str,strlen) if str="" then gotTopic="" exit function end if dim l,t,c, i str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<") l=len(str) t=0 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 gotTopic=left(str,i) & "…" exit for else gotTopic=str end if next gotTopic=replace(replace(replace(replace(gotTopic," "," "),chr(34),"""),">",">"),"<","<") end function '================================================= '过程名:ShowArticleContent '作 用:显示文章具体的内容,可以分页显示 '参 数:无 '================================================= sub ShowArticleContent() dim ArticleID,strContent,CurrentPage dim ContentLen,MaxPerPage,pages,i,lngBound dim BeginPoint,EndPoint ArticleID=rs("ArticleID") strContent=rs("Content") ContentLen=len(strContent) CurrentPage=trim(request("ArticlePage")) if ShowContentByPage="No" or ContentLen<=200000 then response.write strContent if ShowContentByPage="Yes" then response.write "</p><p align='center'></p>" end if else if CurrentPage="" then CurrentPage=1 else CurrentPage=Cint(CurrentPage) end if pages=ContentLen\MaxPerPage_Content if MaxPerPage_Content*pages<ContentLen then pages=pages+1 end if lngBound=MaxPerPage_Content '最大误差范围 if CurrentPage<1 then CurrentPage=1 if CurrentPage>pages then CurrentPage=pages
dim lngTemp dim lngTemp1,lngTemp1_1,lngTemp1_2,lngTemp1_1_1,lngTemp1_1_2,lngTemp1_1_3,lngTemp1_2_1,lngTemp1_2_2,lngTemp1_2_3 dim lngTemp2,lngTemp2_1,lngTemp2_2,lngTemp2_1_1,lngTemp2_1_2,lngTemp2_2_1,lngTemp2_2_2 dim lngTemp3,lngTemp3_1,lngTemp3_2,lngTemp3_1_1,lngTemp3_1_2,lngTemp3_2_1,lngTemp3_2_2 dim lngTemp4,lngTemp4_1,lngTemp4_2,lngTemp4_1_1,lngTemp4_1_2,lngTemp4_2_1,lngTemp4_2_2 dim lngTemp5,lngTemp5_1,lngTemp5_2 dim lngTemp6,lngTemp6_1,lngTemp6_2 if CurrentPage=1 then BeginPoint=1 else BeginPoint=MaxPerPage_Content*(CurrentPage-1)+1 lngTemp1_1_1=instr(BeginPoint,strContent,"</table>",1) lngTemp1_1_2=instr(BeginPoint,strContent,"</TABLE>",1) lngTemp1_1_3=instr(BeginPoint,strContent,"</Table>",1) if lngTemp1_1_1>0 then lngTemp1_1=lngTemp1_1_1 elseif lngTemp1_1_2>0 then lngTemp1_1=lngTemp1_1_2 elseif lngTemp1_1_3>0 then lngTemp1_1=lngTemp1_1_3 else lngTemp1_1=0 end if lngTemp1_2_1=instr(BeginPoint,strContent,"<table",1) lngTemp1_2_2=instr(BeginPoint,strContent,"<TABLE",1) lngTemp1_2_3=instr(BeginPoint,strContent,"<Table",1) if lngTemp1_2_1>0 then lngTemp1_2=lngTemp1_2_1 elseif lngTemp1_2_2>0 then lngTemp1_2=lngTemp1_2_2 elseif lngTemp1_2_3>0 then lngTemp1_2=lngTemp1_2_3 else lngTemp1_2=0 end if if lngTemp1_1=0 and lngTemp1_2=0 then lngTemp1=BeginPoint else if lngTemp1_1>lngTemp1_2 then lngtemp1=lngTemp1_2 else lngTemp1=lngTemp1_1+8 end if end if
lngTemp2_1_1=instr(BeginPoint,strContent,"</p>",1) lngTemp2_1_2=instr(BeginPoint,strContent,"</P>",1) if lngTemp2_1_1>0 then lngTemp2_1=lngTemp2_1_1 elseif lngTemp2_1_2>0 then lngTemp2_1=lngTemp2_1_2 else lngTemp2_1=0 end if lngTemp2_2_1=instr(BeginPoint,strContent,"<p",1) lngTemp2_2_2=instr(BeginPoint,strContent,"<P",1) if lngTemp2_2_1>0 then lngTemp2_2=lngTemp2_2_1 elseif lngTemp2_2_2>0 then lngTemp2_2=lngTemp2_2_2 else lngTemp2_2=0 end if if lngTemp2_1=0 and lngTemp2_2=0 then lntTemp2=BeginPoint else if lngTemp2_1>lngTemp2_2 then lngtemp2=lngTemp2_2 else lngTemp2=lngTemp2_1+4 end if end if
lngTemp3_1_1=instr(BeginPoint,strContent,"</ur>",1) lngTemp3_1_2=instr(BeginPoint,strContent,"</UR>",1) if lngTemp3_1_1>0 then lngTemp3_1=lngTemp3_1_1 elseif lngTemp3_1_2>0 then lngTemp3_1=lngTemp3_1_2 else lngTemp3_1=0 end if lngTemp3_2_1=instr(BeginPoint,strContent,"<ur",1) lngTemp3_2_2=instr(BeginPoint,strContent,"<UR",1) if lngTemp3_2_1>0 then lngTemp3_2=lngTemp3_2_1 elseif lngTemp3_2_2>0 then lngTemp3_2=lngTemp3_2_2 else lngTemp3_2=0 end if if lngTemp3_1=0 and lngTemp3_2=0 then lngTemp3=BeginPoint else if lngTemp3_1>lngTemp3_2 then lngtemp3=lngTemp3_2 else lngTemp3=lngTemp3_1+5 end if end if if lngTemp1<lngTemp2 then lngTemp=lngTemp2 else lngTemp=lngTemp1 end if if lngTemp<lngTemp3 then lngTemp=lngTemp3 end if
if lngTemp>BeginPoint and lngTemp<=BeginPoint+lngBound then BeginPoint=lngTemp else lngTemp4_1_1=instr(BeginPoint,strContent,"</li>",1) lngTemp4_1_2=instr(BeginPoint,strContent,"</LI>",1) if lngTemp4_1_1>0 then lngTemp4_1=lngTemp4_1_1 elseif lngTemp4_1_2>0 then lngTemp4_1=lngTemp4_1_2 else lngTemp4_1=0 end if lngTemp4_2_1=instr(BeginPoint,strContent,"<li",1) lngTemp4_2_1=instr(BeginPoint,strContent,"<LI",1) if lngTemp4_2_1>0 then lngTemp4_2=lngTemp4_2_1 elseif lngTemp4_2_2>0 then lngTemp4_2=lngTemp4_2_2 else lngTemp4_2=0 end if if lngTemp4_1=0 and lngTemp4_2=0 then lngTemp4=BeginPoint else if lngTemp4_1>lngTemp4_2 then lngtemp4=lngTemp4_2 else lngTemp4=lngTemp4_1+5 end if end if if lngTemp4>BeginPoint and lngTemp4<=BeginPoint+lngBound then BeginPoint=lngTemp4 else lngTemp5_1=instr(BeginPoint,strContent,"<img",1) lngTemp5_2=instr(BeginPoint,strContent,"<IMG",1) if lngTemp5_1>0 then lngTemp5=lngTemp5_1 elseif lngTemp5_2>0 then lngTemp5=lngTemp5_2 else lngTemp5=BeginPoint end if if lngTemp5>BeginPoint and lngTemp5<BeginPoint+lngBound then BeginPoint=lngTemp5 else lngTemp6_1=instr(BeginPoint,strContent,"<br>",1) lngTemp6_2=instr(BeginPoint,strContent,"<BR>",1) if lngTemp6_1>0 then lngTemp6=lngTemp6_1 elseif lngTemp6_2>0 then lngTemp6=lngTemp6_2 else lngTemp6=0 end if if lngTemp6>BeginPoint and lngTemp6<BeginPoint+lngBound then BeginPoint=lngTemp6+4 end if end if end if end if end if
if CurrentPage=pages then EndPoint=ContentLen else EndPoint=MaxPerPage_Content*CurrentPage if EndPoint>=ContentLen then EndPoint=ContentLen else lngTemp1_1_1=instr(EndPoint,strContent,"</table>",1) lngTemp1_1_2=instr(EndPoint,strContent,"</TABLE>",1) lngTemp1_1_3=instr(EndPoint,strContent,"</Table>",1) if lngTemp1_1_1>0 then lngTemp1_1=lngTemp1_1_1 elseif lngTemp1_1_2>0 then lngTemp1_1=lngTemp1_1_2 elseif lngTemp1_1_3>0 then lngTemp1_1=lngTemp1_1_3 else lngTemp1_1=0 end if lngTemp1_2_1=instr(EndPoint,strContent,"<table",1) lngTemp1_2_2=instr(EndPoint,strContent,"<TABLE",1) lngTemp1_2_3=instr(EndPoint,strContent,"<Table",1) if lngTemp1_2_1>0 then lngTemp1_2=lngTemp1_2_1 elseif lngTemp1_2_2>0 then lngTemp1_2=lngTemp1_2_2 elseif lngTemp1_2_3>0 then lngTemp1_2=lngTemp1_2_3 else lngTemp1_2=0 end if if lngTemp1_1=0 and lngTemp1_2=0 then lngTemp1=EndPoint else if lngTemp1_1>lngTemp1_2 then lngtemp1=lngTemp1_2-1 else lngTemp1=lngTemp1_1+7 end if end if
lngTemp2_1_1=instr(EndPoint,strContent,"</p>",1) lngTemp2_1_2=instr(EndPoint,strContent,"</P>",1) if lngTemp2_1_1>0 then lngTemp2_1=lngTemp2_1_1 elseif lngTemp2_1_2>0 then lngTemp2_1=lngTemp2_1_2 else lngTemp2_1=0 end if lngTemp2_2_1=instr(EndPoint,strContent,"<p",1) lngTemp2_2_2=instr(EndPoint,strContent,"<P",1) if lngTemp2_2_1>0 then lngTemp2_2=lngTemp2_2_1 elseif lngTemp2_2_2>0 then lngTemp2_2=lngTemp2_2_2 else lngTemp2_2=0 end if if lngTemp2_1=0 and lngTemp2_2=0 then lngTemp2=EndPoint else if lngTemp2_1>lngTemp2_2 then lngTemp2=lngTemp2_2-1 else lngTemp2=lngTemp2_1+3 end if end if
lngTemp3_1_1=instr(EndPoint,strContent,"</ur>",1) lngTemp3_1_2=instr(EndPoint,strContent,"</UR>",1) if lngTemp3_1_1>0 then lngTemp3_1=lngTemp3_1_1 elseif lngTemp3_1_2>0 then lngTemp3_1=lngTemp3_1_2 else lngTemp3_1=0 end if lngTemp3_2_1=instr(EndPoint,strContent,"<ur",1) lngTemp3_2_2=instr(EndPoint,strContent,"<UR",1) if lngTemp3_2_1>0 then lngTemp3_2=lngTemp3_2_1 elseif lngTemp3_2_2>0 then lngTemp3_2=lngTemp3_2_2 else lngTemp3_2=0 end if if lngTemp3_1=0 and lngTemp3_2=0 then lngTemp3=EndPoint else if lngTemp3_1>lngTemp3_2 then lngtemp3=lngTemp3_2-1 else lngTemp3=lngTemp3_1+4 end if end if if lngTemp1<lngTemp2 then lngTemp=lngTemp2 else lngTemp=lngTemp1 end if if lngTemp<lngTemp3 then lngTemp=lngTemp3 end if
if lngTemp>EndPoint and lngTemp<=EndPoint+lngBound then EndPoint=lngTemp else lngTemp4_1_1=instr(EndPoint,strContent,"</li>",1) lngTemp4_1_2=instr(EndPoint,strContent,"</LI>",1) if lngTemp4_1_1>0 then lngTemp4_1=lngTemp4_1_1 elseif lngTemp4_1_2>0 then lngTemp4_1=lngTemp4_1_2 else lngTemp4_1=0 end if lngTemp4_2_1=instr(EndPoint,strContent,"<li",1) lngTemp4_2_1=instr(EndPoint,strContent,"<LI",1) if lngTemp4_2_1>0 then lngTemp4_2=lngTemp4_2_1 elseif lngTemp4_2_2>0 then lngTemp4_2=lngTemp4_2_2 else lngTemp4_2=0 end if if lngTemp4_1=0 and lngTemp4_2=0 then lngTemp4=EndPoint else if lngTemp4_1>lngTemp4_2 then lngtemp4=lngTemp4_2-1 else lngTemp4=lngTemp4_1+4 end if end if if lngTemp4>EndPoint and lngTemp4<=EndPoint+lngBound then EndPoint=lngTemp4 else lngTemp5_1=instr(EndPoint,strContent,"<img",1) lngTemp5_2=instr(EndPoint,strContent,"<IMG",1) if lngTemp5_1>0 then lngTemp5=lngTemp5_1-1 elseif lngTemp5_2>0 then lngTemp5=lngTemp5_2-1 else lngTemp5=EndPoint end if if lngTemp5>EndPoint and lngTemp5<EndPoint+lngBound then EndPoint=lngTemp5 else lngTemp6_1=instr(EndPoint,strContent,"<br>",1) lngTemp6_2=instr(EndPoint,strContent,"<BR>",1) if lngTemp6_1>0 then lngTemp6=lngTemp6_1+3 elseif lngTemp6_2>0 then lngTemp6=lngTemp6_2+3 else lngTemp6=EndPoint end if if lngTemp6>EndPoint and lngTemp6<EndPoint+lngBound then EndPoint=lngTemp6 end if end if end if end if end if end if response.write mid(strContent,BeginPoint,EndPoint-BeginPoint) response.write "</p><p align='center'><b>" if CurrentPage>1 then response.write "<a href='ArticleShow.asp?ArticleID=" & ArticleID & "&ArticlePage=" & CurrentPage-1 & "'>上一页</a> " end if for i=1 to pages if i=CurrentPage then response.write "<font color='red'>[" & cstr(i) & "]</font> " else response.write "<a href='ArticleShow.asp?ArticleID=" & ArticleID & "&ArticlePage=" & i & "'>[" & i & "]</a> " end if next if CurrentPage<pages then response.write " <a href='ArticleShow.asp?ArticleID=" & ArticleID & "&ArticlePage=" & CurrentPage+1 & "'>下一页</a>" end if response.write "</b></p>" end if
end sub %>