他的特点:单纯,接受参数,给出分页;灵活:可以自己决定,上、下一页的名称(比如我想叫prev、nex t诸如此类)可以决定每页展示的分页数量,跨页数提供一个包装方法,适应不同的网页结构,比如有的网页我需要每个分页包含一个li(
1 ...),依次类推备注说明:提供的示范代码中有两个静态方法大家可以不必理会。这个是自己项目开发用的。call::import,大家可以使用include代 替url::refresh,这是地址操作类,这里暂时不做说明,以后有机会再放上来,大家可以用这个页面的方法geturl()http://www.oschin a.net/code/snippet_182375_6242
[php]代码
num = ceil($count / $size); $size > 0 && $this->size = (int)$size; $page = isset($_get['page']) ? (int)trim($_get['page']) : 1; $page > 1 && $this->current = (int)$page; $this->_title = array('上一页', '1..', $this->num.'..', '下一页'); } /** * 包装分页 * @param string|array $skirt * @param array $entitle * @return string */ public function warp($skirt, $entitle = array()) { empty($this->_pages) && $this->get(); $entitle += $this->_title; $skirt = (array)$skirt + array('', null); $data = implode($skirt[1].$skirt[0], $this->_pages); !is_null($skirt[1]) && $data = $skirt[0].$data.$skirt[1]; return vsprintf($data, $entitle); } /** * 获取分页 * @param int $num 展示分页数 * @param int $span 分页间隔 */ public function get($num = '5', $span = '2') { $this->_pages = array(); $start = $this->current - $num + $span; $start $end = $start + $num; $end > $this->num && $end = (int)$this->num; $this->current > 1 && $this->_pages[] = $this->_setpage($this->current - 1, '%1$s'); $start > 1 && $this->_pages[] = $this->_setpage(null, '%2$s'); for($i = $start; $i _pages[] = $this->_setpage($i, $i); $end num && $this->_pages[] = $this->_setpage($this->num, '%3$s'); $this->current num && $this->_pages[] = $this->_setpage($this->current + 1, '%4$s'); return (array)$this->_pages; } private function _setpage($page, $name = '%s') { $hover = $page == $this->current ? ' class=pagehover' : ''; return sprintf('%s', url::refresh(array('page' => $page)), $hover, $name); }}?>
复制代码
使用示范
$pages = new pages(100, 20);$pages->warp('|');
复制代码
分页, php