<?php class RewritePage { private $myde_count; //总记录数 public $myde_size; //每页记录数 private $myde_page; //当前页 private $myde_page_count; //总页数 private $page_url; //页面url private $page_i; //起始页 private $page_ub; //结束页 public $page_limit; function __construct($myde_count=0,$myde_size=1,$myde_page=1,$page_url)//构造函数 { $this->myde_count=$this->numeric($myde_count); $this->myde_size=$this->numeric($myde_size); $this->myde_page=$this->numeric($myde_page); $this->page_limit=($this->myde_page * $this -> myde_size) - $this -> myde_size; //下一页的开始记录 $this->page_url=$page_url; //连接的地址 if($this->myde_page<1)$this->myde_page=1; //当前页小于1的时候,,值赋值为1 if($this->myde_count<0)$this->myde_page=0; $this->myde_page_count=ceil($this->myde_count/$this->myde_size);//总页数 if($this->myde_page_count<1) $this->myde_page_count=1; if($this->myde_page>$this->myde_page_count) $this->myde_page=$this->myde_page_count; //$this->page_i=$this->myde_page-2; $this->page_i=$this->myde_page-2; $this->page_ub=$this->myde_page+2; //$this->page_ub=$this->myde_page+2; if($this->page_i<1)$this->page_i=1; if($this->page_ub>$this->myde_page_count){$this->page_ub=$this->myde_page_count; } } private function numeric($id) //判断是否为数字 { if (strlen($id)){ if (!preg_match("/^[0-9]+$/",$id)) $id = 1; }else{ $id = 1; } return $id; } private function page_replace($page) //地址替换 { return str_replace("{page}", $page, $this -> page_url); } private function myde_home() //首页 { if($this -> myde_page != 1){ return " <li><a href=\"".$this -> page_replace(1)."\" title=\"首页\" >首页</a></li>\n"; }else{ return " <li> 首页 </li>\n"; } } private function myde_prev() //上一页 { if($this -> myde_page != 1){ return " <li><a href=\"".$this -> page_replace($this->myde_page-1) ."\" title=\"上一页\" >上一页</a></li>\n"; }else{ return " <li> 上一页 </li>\n"; } } private function myde_next() //下一页 { if($this -> myde_page != $this -> myde_page_count){ return " <li><a href=\"".$this -> page_replace($this->myde_page+1) ."\" title=\"下一页\" >下一页</a></li>\n"; }else{ return " <li> 下一页 </li>\n"; } } private function myde_last() //尾页 { if($this -> myde_page != $this -> myde_page_count){ return " <li><a href=\"".$this -> page_replace($this -> myde_page_count)."\" title=\"尾页\" >尾页</a></li>\n"; }else{ return " <li> 尾页 </li>\n"; } } function myde_write($id='page') //输出 { $str = "<div id=\"".$id."\" class=\"pagelist\">\n <ul>\n "; //$str .= " <li>总记录:<span>".$this -> myde_count."</span></li>\n"; //$str .= " <li><span>".$this -> myde_page."</span>/<span>".$this -> myde_page_count."</span></li>\n"; $str .= $this -> myde_home(); $str .= $this -> myde_prev(); for($page_for_i=$this->page_i;$page_for_i <= $this -> page_ub; $page_for_i++){ if($this -> myde_page == $page_for_i){ $str .= " <li class=\"currentlist\">".$page_for_i."</li>\n"; } else{ $str .= " <li><a href=\"".$this -> page_replace($page_for_i)."\" title=\"第".$page_for_i."页\">"; $str .= $page_for_i . "</a></li>\n"; } } $str .= $this -> myde_next(); $str .= $this -> myde_last(); // $str .= " <li class=\"pages_input\"><input type=\"text\" value=\"".$this -> myde_page."\""; // $str .= "onmouseover=\"javascript:this.value='';this.focus();\" onkeydown=\"javascript: if(event.keyCode==13){ location='"; // $str .= $this -> page_replace("'+this.value+'")."';return false;}\""; // $str .= " title=\"输入您想要到达的页码,然后回车!\" /></li>\n"; $str .= " </ul></div>"; return $str; } } /*-------------------------实例--------------------------------* $page = new RewritePage(1000,5,$_GET['page'],'?page={page}');//用于动态 $page = new RewritePage(1000,5,$_GET['page'],'list-{page}.html');//用于静态或者伪静态 $page -> myde_write();//显示 */ ?>
测试页:
<?php require_once('RewritePage.class.php'); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>伪静态分页测试</title> <style type="text/css"> *{font:12px/1.5em Microsoft YaHei;} div.pagelist{text-align:left;} div.pagelist ul{list-style-type:none;} div.pagelist li{display:inline; margin:0 5px;} </style> </head> <body> 伪静态分页 <?php $rewritePage = new RewritePage(1000, 5, $_GET['page'] = 3, 'list_{page}.html'); echo $rewritePage -> myde_write(); ?> <hr> 动态分页 <?php $page = new RewritePage(1000, 5, $_GET['page'] = 3, '?page={page}'); echo $page -> myde_write(); ?> </body> </html>