通用的php分页函数
<?php
/**
* 返回分页链接字符串
* @param int $page 当前页码 0或1均视为第一页
* @param int $total 记录总数
* @param int $pagesize 每页显示的记录数
* @param int $number 每页显示的分页链接数量
* @param string $url 分页链接url样式,默认直接使用GET['page']传递
* 但针对一些特殊情况,如ajax分页,静态页分页,可能不能使用GET传递页码,需要定义url样式
* 其中必须包含{page}字符串,将被替换为对应的页码 如
* $url = 'list_{page}.html';
* $url = 'javascript:funct(a,b,{page})';
* @return string 分页链接HTML代码
*/
function pagelink($page = 0, $total = 0, $pagesize = 0, $number = 10, $url = '') {
$page = max(intval($page), 1);
$total = intval($total);
$pagesize = max(intval($pagesize), 0);
$pages = ceil($total / $pagesize);
if ($pages < 2) return;
if (!$url) {
$url = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
$url = preg_replace('/\&*page=\d*\b/', '', $url);
$url .= empty($_SERVER['QUERY_STRING']) ? "page={page}" : "&page={page}";
}
$s = '';
if ($page > 1) {
$s .= '<a title="第一页" class="first_page" href="' . str_replace('{page}', 1, $url) . '"><<</a>';
$s .= '<a title="上一页" class="prev_page" href="' . str_replace('{page}', ($page - 1), $url) . '"> < </a>';
} else {
$s .= '<a title="第一页" class="first_page"> << </a>';
$s .= '<a title="上一页" class="prev_page"> < </a>';
}
if ($number % 2) {
$start = max($page - ceil($number / 2) + 1, 1);
} else {
$start = max($page - intval($number / 2), 1);
}
$end = min($start + $number - 1, $pages);
if (($end - $start) < ($number - 1)) {
$start = max($end - $number + 1, 1);
}
for ($i = $start; $i <= $end; $i++) {
$sel = $page == $i ? 'class="current_page"' : '';
$link = str_replace('{page}', $i, $url);
$href = $page == $i ? '' : "href=\"$link\"";
$s .= "<a $sel $href> $i </a>";
}
if ($page < $pages) {
$link = str_replace('{page}', $page + 1, $url);
$s .= "<a class=\"next_page\" href=\"$link\" title=\"下一页\"> > </a>";
$link = str_replace('{page}', $pages, $url);
$s .= "<a class=\"last_page\" href=\"$link\" title=\"最后页\"> >> </a>";
} else {
$s .= "<a class=\"netxt_page\"> > </a>";
$s .= "<a class=\"last_page\"> >> </a>";
}
$s .= "<a class=\"total\">总数 $total </a>";
return $s;
}
参考地址:https://www.oschina.net/question/1168437_140570
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=725