php页码形式分页函数支持静态化地址及ajax分页


Posted in PHP onMarch 28, 2014

之前每次遇到分页,总是得自己写,觉得挺繁琐的,所以本着通用的原则,写了一个分页的方法,特此记录。

目前此分页支持静态化地址分页和无链接地址时的ajax分页(但是js得自己写):

支持的静态地址如下:www.example.com/xxx-xxx-p1-xxxx-xx.html

其他形式静态化需根据自己情况进行改写

支持ajax方式分页时,$link参数为空,但提供了pid和optype,其中pid用于获取该页码页数,optype用于一个页面存在多个分页时区分当前触发动作属于哪个分页逻辑

/********************************************************** 
* 
* 获取页码 
* 
********************************************************** 
* 
* @params string $link 链接地址(链接为空时可以用ajax翻页) 
* 
* @params int $intPage 当前页数 
* 
* @params int $intTotal 总页数 
* 
* @params int $intSize 要显示的页数个数 
* 
* @params string $type 链接种类(多个翻页用于区分翻页区域) 
* 
********************************************************** 
* 
* @return array 
*/ 
private function formatPage($link="",$intPage,$intTotal,$intSize=3,$type="") 
{ 
$strPage = '<div class="g_serpage clearfix">'; 
if($intTotal > 0) 
{ 
if($intPage > 1) 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".($intPage-1),$link).'"><<上一页</a>':'<a optype="'.$type.'" pid="showpage_'.($intPage-1).'" href="javascript:void(0)"><<上一页</a>'; 
else 
$strPage .= '<a href="javascript:void(0)"><<上一页</a>'; 
//窗口宽度大于等于总页数 
if( ($intSize+2) >= $intTotal ) 
{ 
for($i=1;$i<=$intTotal;$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
} 
else 
{ 
if($intPage < ceil($intSize/2)) 
{ 
for($i=1;$i<=$intSize;$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
$strPage .= $link!=''?'<a class="gpage_nobor" >…</a><a href="'.preg_replace("/-p(\d+)/","p".$intTotal,$link).'" >'.$intTotal.'</a>':'<a class="gpage_nobor" >…</a><a optype="'.$type.'" pid="showpage_'.$intTotal.'" href="javascript:void(0)" >'.$intTotal.'</a>'; 
} 
elseif(($intTotal-$intPage) < ceil($intSize/2)) 
{ 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p1",$link).'">1</a><a class="gpage_nobor" >…</a>':'<a optype="'.$type.'" pid="showpage_1" href="javascript:void(0)">1</a><a class="gpage_nobor" >…</a>'; 
for($i = ($intTotal + 1 - $intSize);$i++;$i<=$intTotal) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
} 
else 
{ 
$intOffset = floor($intSize/2); 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p1",$link).'">1</a>':'<a optype="'.$type.'" pid="showpage_1" href="javascript:void(0)">1</a>'; 
if( ($intPage - $intOffset) > 2) 
{ 
$strPage .= '<a class="gpage_nobor" >…</a>'; 
} 
for($i=(($intPage - $intOffset)<=1?2:($intPage - $intOffset));$i<=(($intPage + $intOffset)>=$intTotal?($intTotal-1):($intPage + $intOffset));$i++) 
{ 
$strClass = $i == $intPage ? 'class="g_serpagcur"' : ""; 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$i,$link).'" '.$strClass.'>'.$i.'</a>':'<a optype="'.$type.'" pid="showpage_'.$i.'" href="javascript:void(0)" '.$strClass.'>'.$i.'</a>'; 
} 
if( ($intPage - $intOffset) < ($intTotal - 1)) 
{ 
$strPage .= '<a class="gpage_nobor" >…</a>'; 
} 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".$intTotal,$link).'">'.$intTotal.'</a>':'<a optype="'.$type.'" pid="showpage_'.$intTotal.'" href="javascript:void(0)">'.$intTotal.'</a>'; 
} 
} 
if($intPage < $intTotal) 
{ 
$strPage .= $link!=''?'<a href="'.preg_replace("/-p(\d+)/","p".($intPage+1),$link).'">下一页>></a>':'<a optype="'.$type.'" pid="showpage_'.($intPage+1).'" href="javascript:void(0)">下一页>></a>'; 
} 
else 
{ 
$strPage .= '<a href="javascript:void(0)">下一页>></a>'; 
} 
} 
$strPage .= "</div>"; 
return $strPage; 
}
PHP 相关文章推荐
php字符串截取问题
Nov 28 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
php随机输出名人名言的代码
Oct 07 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
PHP编写的图片验证码类文件分享
Jun 06 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 PHP
php7 错误处理机制修改实例分析
May 25 PHP
小谈php正则提取图片地址
Mar 27 #PHP
php顺序查找和二分查找示例
Mar 27 #PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 #PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 #PHP
php去除换行(回车换行)的三种方法
Mar 26 #PHP
php的memcache类分享(memcache队列)
Mar 26 #PHP
codeigniter自带数据库类使用方法说明
Mar 25 #PHP
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
React如何避免重渲染
2018/04/10 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
python插入数据到列表的方法
2015/04/30 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
internal修饰符起什么作用
2013/12/16 面试题
农民入党思想汇报
2014/01/03 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
公司新年寄语
2014/04/04 职场文书
讲解员培训方案
2014/05/04 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript