超长字符的智能分页:支持HTML

大概在九九年做游戏网站的时候,就对文章的发布感到麻烦,不过那会儿玩ASP不精。只是将就用着。在遇到长文件 10000 字时网页就是一大片长了。 
   
  去年,做一个通用的文章与新闻管理系统时,曾写了一段代码,用来分离。现在贴出来。 
   
  要说明的是: 
   
  我的文章 录入界面是基于WEB的HEMLEDITOR,就像这里的ABC代码差不多。所以实际提交的是HTML格式的文 本。 
   
  对HTML做了相应的处理,不会由HTML代码中切开。 
   
  这里另一位兄弟曾发表过一个,原理一样,不过我没仔细看过,不知有啥不同。 
   
   
  代码如下: 
  -------------------------------------- 
  'Request Form Item 
  I_Forder = Request.Form ("I_Folder") 
  I_Topic = Request.Form ("I_Topic") 
  I_Title = htmlencode(Request.Form ("I_Title")) 
  I_Body = Request.Form ("body") 
  I_Source = Request.Form ("I_Source") 
  I_Keyword= htmlencode(Request.Form ("I_Keyword")) 
  I_ISHOT = request.form("ishot") 
  if i_ishot = "" then i_ishot="N" 
  i_ispic = request.form("ispic") 
  if i_ispic = "" then i_ispic ="N" 
  i_pic = request.form("InsertImage") 
  i_body = replace(i_body,"contentEditable=true","contentEditable=false") 
   
  'Check Input 
  '...... 
   
  'Get Pages ,B = Body 
  B_Len = Len(I_Body) 
  B_Pages = 1 
  'T = Temp 
  T_Loop = true 
   
  Do While T_Loop '这里loop多次,每4000分一页,算出页码并加入库。 
  If B_Len > 4000 then 
  N_Body = Left(I_Body,4000) 'N = New 
  'If "<P" in N_Body,Else ">" in N_Body 
  If Instrrev(N_Body,"<P") > 0 and (Len(N_Body) - Instrrev(N_Body,"<P"))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,"<P")-1) 
  else if Instrrev(N_Body,"  ") > 0 and (Len(N_Body) - Instrrev(N_Body,"  "))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,"  ")-1) 
  Else If Instrrev(N_Body,"。") > 0 and (Len(N_Body) - Instrrev(N_Body,"。"))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,"。")) 
  Else If Instrrev(N_Body,";") > 0 and (Len(N_Body) - Instrrev(N_Body,";"))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,";")) 
  else if Instrrev(N_Body,",") > 0 and (Len(N_Body) - Instrrev(N_Body,","))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,",")) 
  else if Instrrev(N_Body,".") > 0 and (Len(N_Body) - Instrrev(N_Body,"."))< 400 then 
  N_Body = Left(N_Body,InstrRev(N_Body,".")) 
  end if 
  end if 
  End If 
  End If 
  end if 
  End if 
   
  N_Len = Len(N_Body) 
  I_Body = Mid(I_Body,N_Len+1) 
  B_Len = Len(I_Body) 
   
  Else 
  N_Body = I_Body 
  T_Loop = false 
  End If 
   
   
  'Add to database 
  Exec_prc_Content_Ins I_Forder,I_Topic,I_Title,I_Source,N_Body,i_ispic,i_pic,i_ishot,I_Keyword,B_Pages 
   
  '这里一个function,你可以自己处理,反正结果有两个,一个是body,一个是b_pages,就是页码。 
   
   
  B_Pages = B_Pages + 1 
   
  Loop 
   
   
  %> 
   
  <html> 
   
  <head> 
  <meta name="GENERATOR" content="Microsoft FrontPage 5.0"> 
  <meta name="ProgId" content="FrontPage.Editor.Document"> 
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
  <title>新建网页 1</title> 
  <link rel="stylesheet" type="text/css" href="../CSS/default.css"> 
  </head> 
   
  <body> 
   
  <div align="center"> 
  <center> 
   
  <table border=1 width="300" height="128" bordercolor="#000000" cellspacing="0" cellpadding="0" style="border-collapse: collapse"><tr> 
  <td bgcolor="#DEDBD6" height="31"> 
  录入成功</td></tr><tr><td height="96"> 
  <p align="center">此文章共分<%=B_Pages-1%>页 
  </td></tr></table> 
   
   
  </center> 
  </div> 
  <script> 
  top.main_top.location.reload(); 
  </script> 
   
  </body> 


'引用自http://www.jscode.cn/arthtml/art4442.htm


文章来自: 本站原创
引用通告地址: http://www.is21.cn/trackback.asp?tbID=667
Tags:
评论: 0 | 引用: 0 | 查看次数: 1114
发表评论
你没有权限发表留言!