对长文章做到完美的分页输出

王朝other·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

利用统计文章字数,然后达到一定字数就截断输出,但是分页的内容就会在莫名其妙的地方截断,不是很友好。

很简单,在要截断的地方附近找下面的符号:

;’”?。!;'".!

如果后面存在<p>或<br>就分页。主要是要研究文章的格式。

<%

if Request.ServerVariables("Content_Length") > 0 then

content = Request.Form("textarea1")

PageLength = 1000 '每页字数

CLength = Len(content)

PageCount = Int(Clength/PageLength) + 1 '计算页数

dim PageArray

redim PageArray(PageCount)

Seperator = Array(chr(13),chr(10),"。","!","?",";",",","”","’") '分隔符

PageArray(0) = 0

Pos = 0

for j=0 to ubound(Seperator)

Pos = instr(PageArray(i)+900,content,Seperator(j)) 'PageArray(i)+900 附近位置是100字,1-999可调

while Pos > 0 and Pos < (i+1)*PageLength and Pos > i*PageLength

PageArray(i) = Pos

Pos = instr(Pos+PageLength,content,Seperator(j))

wend

if PageArray(i) > 0 then

Response.Write "0:i¦ "&PageArray(i)&"<br>"&j&":j"&Seperator(j)&"<br>"

j = j + ubound(Seperator) + 1

end if

next

for i=1 to PageCount-1

PageArray(i) = 0

Pos = 0

for j=0 to ubound(Seperator)

Pos = instr(PageArray(i-1)+950,content,Seperator(j))

while Pos > 0 and Pos < (i+1)*PageLength and Pos > i*PageLength

PageArray(i) = Pos

Pos = instr(Pos+PageLength,content,Seperator(j))

wend

if PageArray(i) > 0 then

Response.Write i&":i¦ "&PageArray(i)&"<br>"&j&":j"&Seperator(j)&"<br>"

j = j + ubound(Seperator) + 1

end if

next

next

output = mid(content,1,PageArray(0))

output = replace(output,chr(13),"<br>")

Response.Write "<br><br>第1段<br>"

Response.Write output

for i=1 to PageCount-2

output = mid(content,PageArray(i-1)+1,PageArray(i)-PageArray(i-1))

output = replace(output,chr(13),"<br>")

Response.Write "<br><br>第"&i+1&"段<br>"

Response.Write output

next

'最后一段的输出就没写了

else

%>

<FORM action="" method=POST id=form1 name=form1>

<TEXTAREA rows=70 cols=120 id=textarea1 name=textarea1>

</TEXTAREA>

<INPUT type="submit" value="Submit" id=submit1 name=submit1>

</FORM>

<%end if%>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航