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

 更新时间:2014年03月28日 11:34:45   作者:  
这篇文章主要介绍了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;
}

相关文章

  • PHP中使用反射获取类的所有方法

    PHP中使用反射获取类的所有方法

    在 PHP 开发中,了解类的结构和行为对于调试、测试以及构建可扩展的应用至关重要,有时,你可能需要动态地获取一个类的所有方法,PHP 的反射 API 提供了一种强大且灵活的方式来实现这一目标,接下来给大家详细介绍PHP中使用反射获取类的所有方法
    2024-11-11
  • php一维二维数组键排序方法实例总结

    php一维二维数组键排序方法实例总结

    这篇文章主要介绍了php一维二维数组键排序方法,以实例形式总结了针对一维数组的冒泡排序与使用array_multisort()对二位数组按照指定键值排序等方法,具有不错的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • PHP生成和获取XML格式数据的方法

    PHP生成和获取XML格式数据的方法

    这篇文章主要介绍了PHP生成和获取XML格式数据的方法,结合实例形式较为详细的分析了PHP操作数据库生成XML及获取XML格式数据的相关技巧,需要的朋友可以参考下
    2016-03-03
  • PHP中执行cmd命令的方法

    PHP中执行cmd命令的方法

    这篇文章主要介绍了PHP中执行cmd命令的方法,需要的朋友可以参考下
    2014-10-10
  • php笔记之:AOP的应用

    php笔记之:AOP的应用

    你以前听说过AOP(Aspect Oriented Programming)吗?虽然在php方面,好像没有过多的使用,但是在企业级开发中,AOP被广泛使用。我将借此文,向大家介绍PHP方面的AOP
    2013-04-04
  • 浅谈ThinkPHP中initialize和construct的区别

    浅谈ThinkPHP中initialize和construct的区别

    下面小编就为大家带来一篇浅谈ThinkPHP中initialize和construct的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • php UTF8 文件的签名问题

    php UTF8 文件的签名问题

    在我们保存UTF8文本文件的时候,可以选择带签名,或者不带签名。
    2009-10-10
  • php中抓取网页内容的实例详解

    php中抓取网页内容的实例详解

    这篇文章主要介绍了php中抓取网页内容的实例详解的相关资料,这里提供两种实现方法,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • 如何判断php复选框是否被选中

    如何判断php复选框是否被选中

    在本篇文章里小编给大家整理了关于php判断复选框是否被选中的方法,需要的朋友们参考下。
    2020-01-01
  • PHP实现的curl批量请求操作示例

    PHP实现的curl批量请求操作示例

    这篇文章主要介绍了PHP实现的curl批量请求操作,结合实例形式分析了php使用curl进行批量请求处理的具体批量创建curl句柄、批量执行句柄、防卡死等相关操作技巧,需要的朋友可以参考下
    2018-06-06

最新评论