送分:探讨htm长文章分页算法,顶者有分
长文章如何自动分页,请各位高人说说自己的出理方法
[解决办法]
帮顶
[解决办法]
顶
没想到更好的方法
[解决办法]
首先要确定文章格式,并且限定切割范围,否则有表格框住基本就没法切了。
其次切割的断点应该在段落结束( </p> <br /> )或者句号(。)附近。而不是在任何标签附近。尽量不要在 <a> 标签内切割。
最后,切割的时候要查询在切割范围内切割点之前有哪些标签没有结束,在切割后要在前一篇结束这些标签,后一篇开始加上这些标签。
[解决办法]
关注。。
[解决办法]
顶上去……
[解决办法]
<html>
1001单纯文字,怎么切
</html>
所以我想最好还是先去除所有的html标签,然后只切文字
但这样会丢失样式和图片信息
[解决办法]
在录入文章的时间,就分页。
如录入文章一的 页一、页二、页三。。。
[解决办法]
帮顶!
[解决办法]
顶顶 LZ
[解决办法]
mark
[解决办法]
不清楚,我顶
[解决办法]
Ivony(授人以鱼不如授人以渔,上海谋生)的建议不错,如果按照任意html标记切的话,很容易将嵌套的table切开,那样布局就不象样了,嵌套的div也会切错
div一般的没有用到高级布局功能,那么在切割的上一篇,记得封闭,在下一篇开始处补上,就没有问题了。
[解决办法]
帮顶
[解决办法]
找个代码,给你贴出来
[解决办法]
帮顶,学习
[解决办法]
帮顶,接分~!~~
[解决办法]
关注
[解决办法]
顶
[解决办法]
http://community.csdn.net/Expert/TopicView.asp?id=5503457
[解决办法]
最好 还是 在编辑 html 的时候 就直接分页 或者
插入 特别的 分页 字符串 然后 按这个字符串 获取string[]
[解决办法]
楼上的好方法
[解决办法]
同意LORRY的方法。
應該是按炤 <P> 或者 《BR》的辦法來做
[解决办法]
顶一下........
呵呵..........
[解决办法]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN ">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME= "Generator " CONTENT= "EditPlus ">
<META NAME= "Author " CONTENT= " ">
<META NAME= "Keywords " CONTENT= " ">
<META NAME= "Description " CONTENT= " ">
<style>
* {
font-size:10.2pt;
font-family:tahoma;
line-height:150%;
}
.divContent
{
border:1px solid red;
background-color:#FFD2D3;
width:500px;
word-break:break-all;
margin:10px 0px 10px;
padding:10px;
}
</style>
</HEAD>
<BODY>
header
<div id= "divPagenation "> </div>
<div id= "divContent "> </div>
footer
<SCRIPT LANGUAGE= "JavaScript ">
<!--
s= " <p> 女老师竭力向孩子们证明,学习好功课的重要性。 </p> <p> 她说:“牛顿坐在树下,眼睛盯着树在思考,这时,有一个苹果落在他的头上,于是他发现了万有引力定律,孩子们,你们想想看,做一位伟大的科学家多么好,多么神气啊,要想做到这一点,就必须好好学习。” </p> <p> “班上一个调皮鬼对此并不满意。他说:“兴许是这样,可是,假如他坐在学校里,埋头书本,那他就什么也发现不了啦。” </p> <p> 女老师竭力向孩子们证明,学习好功课的重要性。 </p> <p> 她说:“牛顿坐在树下,眼睛盯着树在思考,这时,有一个苹果落在他的头上,于是他发现了万有引力定律,孩子们,你们想想看,做一位伟大的科学家多么好,多么神气啊,要想做到这一点,就必须好好学习。” </p> <p> “班上一个调皮鬼对此并不满意。他说:“兴许是这样,可是,假如他坐在学校里,埋头书本,那他就什么也发现不了啦。” </p> <p> 女老师竭力向孩子们证明,学习好功课的重要性。 </p> <p> 她说:“牛顿坐在树下,眼睛盯着树在思考,这时,有一个苹果落在他的头上,于是他发现了万有引力定律,孩子们,你们想想看,做一位伟大的科学家多么好,多么神气啊,要想做到这一点,就必须好好学习。” </p> <p> “班上一个调皮鬼对此并不满意。他说:“兴许是这样,可是,假如他坐在学校里,埋头书本,那他就什么也发现不了啦。” </p> <p> 女老师竭力向孩子们证明,学习好功课的重要性。 </p> <p> 她说:“牛顿坐在树下,眼睛盯着树在思考,这时,有一个苹果落在他的头上,于是他发现了万有引力定律,孩子们,你们想想看,做一位伟大的科学家多么好,多么神气啊,要想做到这一点,就必须好好学习。” </p> <p> “班上一个调皮鬼对此并不满意。他说:“兴许是这样,可是,假如他坐在学校里,埋头书本,那他就什么也发现不了啦。” </p> <p> 女老师竭力向孩子们证明,学习好功课的重要性。 </p> <p> 她说:“牛顿坐在树下,眼睛盯着树在思考,这时,有一个苹果落在他的头上,于是他发现了万有引力定律,孩子们,你们想想看,做一位伟大的科学家多么好,多么神气啊,要想做到这一点,就必须好好学习。” </p> <p> “班上一个调皮鬼对此并不满意。他说:“兴许是这样,可是,假如他坐在学校里,埋头书本,那他就什么也发现不了啦。” </p> ";
function DHTMLpagenation(content) { with (this)
{
// client static html file pagenation
this.content=content;
this.contentLength=content.length;
this.pageSizeCount;
this.perpageLength=100; //default perpage byte length.
this.currentPage=1;
//this.regularExp=/.+[\?\&]{1}page=(\d+)/;
this.regularExp=/\d+/;
this.divDisplayContent;
this.contentStyle=null;
this.strDisplayContent= " ";
this.divDisplayPagenation;
this.strDisplayPagenation= " ";
arguments.length==2?perpageLength=arguments[1]: ' ';
try {
divExecuteTime=document.createElement( "DIV ");
document.body.appendChild(divExecuteTime);
}
catch(e)
{
}
if(document.getElementById( "divContent "))
{
divDisplayContent=document.getElementById( "divContent ");
}
else
{
try
{
divDisplayContent=document.createElement( "DIV ");
divDisplayContent.id= "divContent ";
document.body.appendChild(divDisplayContent);
}
catch(e)
{
return false;
}
}
if(document.getElementById( "divPagenation "))
{
divDisplayPagenation=document.getElementById( "divPagenation ");
}
else
{
try
{
divDisplayPagenation=document.createElement( "DIV ");
divDisplayPagenation.id= "divPagenation ";
document.body.appendChild(divDisplayPagenation);
}
catch(e)
{
return false;
}
}
DHTMLpagenation.initialize();
return this;
}};
DHTMLpagenation.initialize=function() { with (this)
{
divDisplayContent.className=contentStyle!=null?contentStyle: "divContent ";
if(contentLength <=perpageLength)
{
strDisplayContent=content;
divDisplayContent.innerHTML=strDisplayContent;
return null;
}
pageSizeCount=Math.ceil((contentLength/perpageLength));
DHTMLpagenation.goto(currentPage);
DHTMLpagenation.displayContent();
}};
DHTMLpagenation.displayPage=function() { with (this)
{
strDisplayPagenation= "分页: ";
if(currentPage&¤tPage!=1)
strDisplayPagenation+= ' <a href= "javascript:void(0) " onclick= "DHTMLpagenation.previous() "> 上一页 </a> ';
else
strDisplayPagenation+= "上一页 ";
for(var i=1;i <=pageSizeCount;i++)
{
if(i!=currentPage)
strDisplayPagenation+= ' <a href= "javascript:void(0) " onclick= "DHTMLpagenation.goto( '+i+ '); "> '+i+ ' </a> ';
else
strDisplayPagenation+=i+ " ";
}
if(currentPage&¤tPage!=pageSizeCount)
strDisplayPagenation+= ' <a href= "javascript:void(0) " onclick= "DHTMLpagenation.next() "> 下一页 </a> ';
else
strDisplayPagenation+= "下一页 ";
strDisplayPagenation+= "共 " + pageSizeCount + " 页,每页 " + perpageLength + " 字符,调整字符数: <input type= 'text ' value= ' "+perpageLength+ " ' id= 'ctlPerpageLength '> <input type= 'button ' value= '确定 ' onclick= 'DHTMLpagenation.change(document.getElementById(\ "ctlPerpageLength\ ").value); '> ";
divDisplayPagenation.innerHTML=strDisplayPagenation;
}};
DHTMLpagenation.previous=function() { with(this)
{
DHTMLpagenation.goto(currentPage-1);
}};
DHTMLpagenation.next=function() { with(this)
{
DHTMLpagenation.goto(currentPage+1);
}};
DHTMLpagenation.goto=function(iCurrentPage) { with (this)
{
startime=new Date();
if(regularExp.test(iCurrentPage))
{
currentPage=iCurrentPage;
strDisplayContent=content.substr((currentPage-1)*perpageLength,perpageLength);
}
else
{
alert( "page parameter error! ");
}
DHTMLpagenation.displayPage();
DHTMLpagenation.displayContent();
}};
DHTMLpagenation.displayContent=function() { with (this)
{
divDisplayContent.innerHTML=strDisplayContent;
}};
DHTMLpagenation.change=function(iPerpageLength) { with(this)
{
if(regularExp.test(iPerpageLength))
{
DHTMLpagenation.perpageLength=iPerpageLength;
DHTMLpagenation.currentPage=1;
DHTMLpagenation.initialize();
}
else
{
alert( "请输入数字 ");
}
}};
// method
// DHTMLpagenation(strContent,perpageLength)
DHTMLpagenation(s,100);
//-->
</SCRIPT>
</BODY>
</HTML>
[解决办法]
关注
[解决办法]
jf
[解决办法]
也想看看,最好能直接用控件实现,免得输入代码了
[解决办法]
顶
[解决办法]
jf
[解决办法]
mark
[解决办法]
up^
关注啊……
[解决办法]
帮你顶一下!
------解决方案--------------------
关注....
[解决办法]
to:syc958()
=====================
不错,谢了!!
[解决办法]
关注
[解决办法]
简单的HTML还可以;如果是复杂的有多层嵌层的HTML标记,会很麻烦。。。
[解决办法]
up
[解决办法]
ding
[解决办法]
up
[解决办法]
我正需要这样的功能!
做博客的时候这个就能用上了,写了一大篇的日志,在空间首页显示的时候肯定是在提取一部分出来做导语的.
急死,不知道怎么做.
像baidu,sina等他们就做到了,哎,怎么他们就不能帖一下呢!
[解决办法]
学习~!
[解决办法]
个人觉得可以考虑下HTML语法分析方面,先写出html语言的语法推倒树,凡是在页节点上的必为文字,需要分割的话只能分割文字,并根据上下环境补全html标记
具体实现不知道怎么做,期待高手
[解决办法]
路过~~学习.....
[解决办法]
up
[解决办法]
不能沉~
[解决办法]
顶
[解决办法]
表~~~~关注
[解决办法]
Ivony:
----------------------------------
首先要确定文章格式,并且限定切割范围,否则有表格框住基本就没法切了。
其次切割的断点应该在段落结束( </p> <br /> )或者句号(。)附近。而不是在任何标签附近。尽量不要在 <a> 标签内切割。
最后,切割的时候要查询在切割范围内切割点之前有哪些标签没有结束,在切割后要在前一篇结束这些标签,后一篇开始加上这些标签。
_________________________________
同意他的办法,但如果这里的p、br在表格中,怎么在结尾处补标记?
所以,要根据不同的需求用不同的算法,以提高效率:
1、对于“概述”类截取
直接剔除复杂的标记,甚至img。剔除后,内容几乎全部为纯文本,这样就好办了。例如,找一个合适位置的句号分页即可。
2、对于严格的内容分页
不能剔除任何标记,一定要保证内容格式完整性。定义一些特殊标记,在这些标记内绝对不能分页,例如table、td、tr等,必须“贪婪”。对于其它标记,如div、font等简单标记,可以如楼上所说的补标记。
实际上,如果你的编辑器不支持插入表格等复杂标记,可以节省很多东西,当然算法性能也就提高了。这些都要根据你的实际情况来分析。
[解决办法]
路过~~学习
[解决办法]
帮你顶一下~
[解决办法]
学习
[解决办法]
UP
[解决办法]
路过。
mark。
[解决办法]
学习
[解决办法]
想不出来. 回去再想 留个名
[解决办法]
厉害
[解决办法]
强贴,MARK.................
[解决办法]
人工录入时分页撒~
[解决办法]
路过~~顶下了
------解决方案--------------------
把文章效果转成图片然后按高度切,超过1米8的就腰斩
期待...