/**
*$table 数据总数
*
*
*$pageSize 每页显示几条数据
*
*
*$showPage 显示几个页码数字 例如显示5个:12345...下一页 尾页 当前1页 共10页
*/
function pageBar($table,$pageSize,$showPage=5){
$page = (!empty($_GET['p']))?$_GET['p']:1;
$total = $table;
$totalPage = ceil($total / $pageSize);    //获取总页数
$pageOffset = ($showPage - 1) / 2;    //页码偏移量
$pageBanner = "";
$pageSelf = $_SERVER['PHP_SELF'];
$start = 1;    //开始页码
$end = $totalPage;    //结束页码
if($page > 1){
$pageBanner .= "首页";
$pageBanner .= "上一页";
}
if($totalPage > $showPage){    //当总页数大于显示页数时
if($page > $pageOffset + 1){    //当当前页大于页码偏移量+1时,也就是当页码为4时 开始页码1替换为...
$pageBanner .= "...";
}
if($page > $pageOffset){        //当当前页大于页码偏移量时 开始页码变为当前页-偏移页码
$start = $page - $pageOffset;
$end = $totalPage > $page + $pageOffset ?  $page + $pageOffset : $totalPage;
//如果当前页数+偏移量大于总页数 那么$end为总页数
}else{
$start = 1;
$end = $totalPage > $showPage ? $showPage : $totalPage;
}
if($page + $pageOffset > $totalPage){
$start = $start - ($page + $pageOffset - $end);
}
}
for($i = $start ; $i <= $end ; $i++){ //循环出页码
if($i == $page){
$pageBanner .= "".$i."";
}else{
$pageBanner .= "".$i."";
}

}
if($totalPage > $showPage && $totalPage > $page + $pageOffset){    //当总页数大于页码显示页数时 且总页数大于当前页+偏移量
$pageBanner .= "...";
}
if($page < $totalPage){
$pageBanner .= "下一页";
$pageBanner .= "尾页";
}
$pageBanner .= "当前".$page."页";
$pageBanner .= "共".$totalPage."页";
return $pageBanner;
}

echo '
-------------------------------------------------
';

echo pageBar(200,20);

echo '
-------------------------------------------------
';

效果如下: