根据别人的内容分页类改的,首先感谢原作者的无私奉献,由于之前的不支持html,分页后会出现很多不完整的html标签,个人改进了一些,依据</p>标签分页,不适用与每页严格固定字数的分页

下面的是代码,求优化,求改进,求指点……

 
  
  1. <?php 
  2. class Page{   
  3.     private $file;//文件内容    
  4.     private $current;//当前页   
  5.     private $totalPage;//总的页数   
  6.     private $url;//url地址   
  7.     private $pageLen;//每页显示的内容长度  
  8.     function __construct($file,$len=8000){ //$len表示每页显示的字符数,根据每页显示的字符数算出页数,再根据页数计算出每页显示的段落数(</p>)
  9.                 $this->file = $file;   
  10.         $this->current=isset($_GET['page'])?$_GET['page']:1;   
  11.         $this->pageLen = $len;   
  12.         $this->totalPage = $this->getTotalPage();        
  13.         $this->url= $this->getUrl();   
  14.     }   
  15.     //获取文件内容显示总共有多少页   
  16.     private function getTotalPage(){   
  17.         return ceil(strlen($this->file)/$this->pageLen);   
  18.     }   
  19.     //获得并分离url   
  20.     private function getUrl(){   
  21.         $url =parse_url($_SERVER['REQUEST_URI']);   
  22.         parse_str($url['query'],$queryArr);   
  23.         unset($queryArr['page']);   
  24.         $queryStr = http_build_query($queryArr);   
  25.         return  $url['path'].'?'.$queryStr.'&page=';           
  26.     }   
  27.     //首页   
  28.     private function first(){   
  29.         if($this->current>1)return "<a href='".$this->url."1'>首页</a>";   
  30.     }   
  31.     //上一页   
  32.     private function pre(){    
  33.         if($this->current>1)return "<a href='".$this->url.($this->current-1)."'>上一页</a>";   
  34.     }   
  35.     //下一页   
  36.     private function next(){   
  37.         if($this->current<$this->totalPage)return "<a href='".$this->url.($this->current+1)."'>下一页</a>";   
  38.     }   
  39.     //末页   
  40.     private function end(){   
  41.         if($this->current<$this->totalPage) return "<a href='".$this->url.$this->totalPage."'>末页</a>";   
  42.     }   
  43.     //分页列表   
  44.     private function pager(){   
  45.         for ($i=1;$i<=$this->totalPage;$i++){   
  46.             if($i==$this->current){   
  47.                 $pageListStr.="<span style='font-weight:bold;color:#f00'>".$i."</span> ";   
  48.             }else{   
  49.             $pageListStr.="<a href='".$this->url.$i."'>".$i." </a>";   
  50.             }   
  51.         }   
  52.         return $pageListStr;   
  53.     }   
  54.     //分页样式(显示方式,具体效果用css实现)   
  55.     public function pagerStyle($style=1){   
  56.         switch ($style){   
  57.             case 1:   
  58.                 return "共有".$this->totalPage."页&nbsp;&nbsp;".$this->first().'&nbsp;'.$this->pre().'&nbsp;'.$this->pager().$this->next().'&nbsp;'.$this->end();   
  59.                 break;   
  60.             case 2;   
  61.                 return $this->pager();   
  62.                 break;   
  63.         }   
  64.     }   
  65.     //获取分页内容   
  66.     public function getContents(){  
  67.         return $this->abc($this->current); 
  68.     } 
  69.       
  70.     //截取文件内容       
  71.     public function abc($page){      
  72.             $num = substr_count($this->file,'</p>');        //统计</p>出现的次数 
  73.             $a = ceil($num/$this->totalPage);       //每页要显示的段落的个数,也就是</p>的个数 
  74.             $arr = explode('</p>',$this->file);         //以</p>为标识将原数据划分成数组 
  75.             $str = '';      //存放新闻内容 
  76.             for($i=($page-1)*$a;$i<$page*$a;$i++){ 
  77.                 $str .= $arr[$i];           //按数量循环输出 
  78.             } 
  79.             return $str
  80.           } 
  81. ?>  

下面是调用代码,主要给想我一样的菜鸟们看的,嘿嘿

 
  
  1. $pageNum = 8000; //每页字符数 
  2. $page = new Page($con,$pageNum); 
  3. echo $page->getContents().'<br />'
  4. echo $page->pagerStyle();