日期:2014-05-17  浏览次数:20528 次

【急】简单分页算法的修改!!!!
PHP code

//内容分页
    $c_page=$_GET['page']; //当前页
    $contstr=$NewsCentent; //新闻内容
    //从数据库读出的内容
    $listbyte=8000; //每页显示字节数,正常情况下可设置为5000或其他
    //##寻找文章分页点----------
    $contlen=strlen($contstr);    //新闻长度
    $j=0; //总页数
    $listat[0]=0;    //分页点位置数组
    $lookAt=0;        //分页点的起始寻找位置
    for($i=1;$i<$contlen/$listbyte+1;$i++){
     if($lookAt<$listbyte)
        $lookAt=$listbyte;    //寻找分页点的起始位置是页面的默认长度
     if($lookAt>$contlen){    //如果不足一页的长度
        $j++;
        $listat[$j]=$contlen;//存储第$j页的分页点位置    
        break;
      }
        $endAt=strpos($contstr,"\n",$lookAt); // 寻找本页最后一段内容的结束位置(一段内容在一页内)
        //如果余下的内容不足一页的1/5加到本页,或找不到分页符则作一页处理
        if($endAt>$contlen-$listbyte/5 or intval($endAt)<1){
        $j++;
        $listat[$j]=$contlen; ///
        break;
        }
        else{
        $j++;
        $listat[$j]=$endAt;            //存储第$j页的分页点位置
        $lookAt=$endAt+$listbyte;    //下一次寻找分页点的起始搜寻位置
        }
    }

//打印页码
    $pagenum=$j;//总页
    $page=intval($c_page);
    if(empty($page) or $page<1 or $page>$pagenum) $page=1;
    //$row[0]为ID号,翻页后要根据ID来显示内容
    
    //输出当前页内容
    $stag=$page-1;
    $startb=$listat[$stag];//开始位置
    if($startb>0) //去除首个换行
    $startb=$startb+1;
    $cont=substr($contstr,$startb,$listat[$page]-$startb);
    //heightlight_string("$cont");//php高亮代码输出
    $ShowContent=$cont.'<br>';
    
    if($pagenum>1){
        $ShowPage='<dt> <a href="'.$NewsID.'-'.($page-1).'.html">上一页</a> </dt>';
        for($i=1;$i<$pagenum+1;$i++){
            if($page==$i){
                $Class='Class="onnum"';
                $ShowPage.= '<dt> <a '.$Class.' href="'.$NewsID.'-'.$i.'.html">'.$i.'</a> </dt>';
            }else{
                $ShowPage.= '<dt> <a href="'.$NewsID.'-'.$i.'.html">'.$i.'</a> </dt>';
            }
        }
        $ShowPage.='<dt><a href="'.$NewsID.'-'.($page+1).'.html">下一页</a ></dt>';
    }


以上是简单的PHP新闻分页算法和新闻显示,是自动分页算法,我想加一个手动分页符,能在任意位置分页,请高手修改一下,不胜感激!!!

------解决方案--------------------
你把它写成一个类。哪里需要分页就调用它。
------解决方案--------------------
封装成类文件,需要就调用