网站地图    收藏   

主页 > 后端 > php资料库 >

PHP长文章分页解决办法_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 最近要做个长文章分页 看似简单的功能 实现起来确实比较有难度 网上搜索的都不太靠谱 问了一圈,没人会 长文章分页一个比较头疼的问题就是 就把HTML标签截断,导致文章错位 最后自...

最近要做个长文章分页
看似简单的功能
实现起来确实比较有难度
网上搜索的都不太靠谱
问了一圈,没人会
长文章分页一个比较头疼的问题就是
就把HTML标签截断,导致文章错位
最后自己解决了,分享一下
以下为PHP解决办法:

php长文章分页

/**
* 长文章分段
* @param string $article 文章内容
* @param number $word_number 文章字节限制
* @return array
*/
private function article_addpage($article,$word_number=2000){

$con = explode("<table",$article);
if (count($con)>1){
return $article; //如果包含了表格就跳过,不进行分页处理
}else{
$word_all="";
$word_num=0;
$n="";
$weor_cha=($word_number/10);//(上下浮动每页字数的10%)
$article=preg_replace("/<div(.*?)>/m", "<br>", $article);
$article= str_replace("</div>","", $article);
$article=preg_replace("/<span(.*?)>/m", "<br>", $article);
$article= str_replace("</span>","", $article);
$article=preg_replace("/<p(.*?)>/m", "<br>", $article);
$article= str_replace("</p>","", $article);
$article= str_replace(chr(10),"<br>", $article);
$article=preg_replace("/<(.*?)<br>(.*?)>/m", "<\\1 \\2>", $article);

$artinfo=split("<br>",$article);//根据字符串确定段落

$art_num=count($artinfo);//确定段落数
$page_num_word=array();

for($i=0;$i<=$art_num-1;$i++){
$page_num_word[$i]=strlen($artinfo[$i]);
$word_num=$word_num+$page_num_word[$i];//得到字数

if ($word_num-$weor_cha<=$word_number or $i==0){
$word_all.=$artinfo[$i]."<br>";
}else{

$word_all.="[nextpage]<br>".$artinfo[$i];
$word_num=0;
}
}

return $word_all;

}
}


/**
* 文章分页
* @param string $article 文章内容
* @param number $id 默认第一页
* @param string $page 当前第几页
* @return string
*/
private function article_fenpage($article,$id,$page){

$artinfo=explode("[nextpage]",$article);//根据字符串确定段落
$pages=count($artinfo);//确定段落数
$tempurla="";
$fenyedh="";
// echo $pages;
//=======================================分页导航
//显示总页数
if ($pages>1){

//$fenyedh= $fenyedh."共有".$pages."页 ";
$substart=$page-10;
$sybend=$page+10;
if ($substart<=1 ){
$substart=1;
}
if ($sybend>=$pages ){
$sybend=$pages;
}
//显示分页数
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;

//$fenyedh = "<div class='pages c_txt'>";
//$fenyedh= $fenyedh."<a href='?id=".$id."'>第一页</a> ";
$fenyedh= $fenyedh."<a href='?page=".$id."' class='inline_b up_page'>上一页</a> ";
for ($i=$substart;$i<$page;$i++){
$fenyedh= $fenyedh."<a href='?page=".$i."' class='inline_b'>".$i."</a> ";
}
$fenyedh= $fenyedh.'<a href="javascript:void(0);" title="1" class="inline_b current_pages">'.$page.'</a> '; //当前页
for ($i=$page+1;$i<=$sybend;$i++){
$fenyedh= $fenyedh."<a href='?page=".$i."' class='inline_b' title=".$i.">".$i."</a> ";}
}
if($next > $pages){
$href = 'javascript:void(0);';
}else{
$href = '?page='.$next;
}
$fenyedh= $fenyedh."<a href='".$href."' class='inline_b down_page'>下一页</a> ";
$fenyedh .='<a href="'.Yii::app()->request->hostInfo.'/'.Yii::app()->request->pathInfo.'?view=all" title="全文浏览" class="inline_b">全文浏览</a>';
//$fenyedh= $fenyedh."<a href='?page=".$last."'>最后一页</a>";
//$fenyedh= $fenyedh."</div>";

//=======================================分页导航end
return $fenyedh;
//return $artinfo[$page-1]."<br>".$fenyedh;
}

使用方法:

$page=!empty($_GET['page']) ? $_GET['page'] : 1;
$detailContent = $this->article_addpage($detail->content(),$this->cutesize); 
$cutepage= $this->article_fenpage($detailContent,1,$page);
$detailContent = explode('[nextpage]',$detailContent); 

 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论