php页码形式分页函数支持静态化地址及ajax分页
2015-01-24信息快讯网
这篇文章主要介绍了php页码形式分页函数,此分页支持静态化地址分页和无链接地址时的ajax分页,需要的朋友可以参考下
之前每次遇到分页,总是得自己写,觉得挺繁琐的,所以本着通用的原则,写了一个分页的方法,特此记录。目前此分页支持静态化地址分页和无链接地址时的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; }
如何让搜索引擎抓取AJAX内容解决方案
使用php方法curl抓取AJAX异步内容思路分析及代码分享
php防止伪造数据从地址栏URL提交的方法
一个图片地址分解程序(用于PHP小偷程序)
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
ThinkPHP验证码和分页实例教程
ThinkPHP中ajax使用实例教程
修改destoon会员公司的伪静态中的com目录的方法
PHP基于数组实现的分页函数实例
PHP中IP地址与整型数字互相转换详解
使用ob系列函数实现PHP网站页面静态化
PHP伪静态Rewrite设置之APACHE篇
php中单个数据库字段多列显示(单字段分页、横向输出)
PHP获取短链接跳转后的真实地址和响应头信息的方法
Yii使用CLinkPager分页实例详解
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
PHP开发框架kohana中处理ajax请求的例子
YII实现分页的方法
PHP延迟静态绑定示例分享
destoon之URL Rewrite(伪静态)设置方法详解
php5.2 Json不能正确处理中文、GB编码的解决方法
小谈php正则提取图片地址
php环境套包 dedeampz 伪静态设置示例
php中的静态变量的基本用法
zf框架db类的分页示例分享
php获取文件夹路径内的图片以及分页显示示例
PHP调用JAVA的WebService简单实例
ThinkPHP分页类使用详解
PHP static局部静态变量和全局静态变量总结
php的ajax简单实例
php分页函数示例代码分享
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
php分页代码学习示例分享
php获得用户ip地址的比较不错的方法
采用header定义为文件然后readfile下载(隐藏下载地址)
php实现图形显示Ip地址的代码及注释
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
PHP 动态生成静态HTML页面示例代码
利用浏览器的Javascript控制台调试PHP程序
FireFox浏览器使用Javascript上传大文件
ajax返回值中有回车换行、空格的解决方法分享