速度快的php分页函数,分享一个PHP仿谷歌分页加强版_PHP分页函数 | LsevenTT博客-站群哥...

代码如下

/**

* 分页函数

* @param int $total 总页数

* @param int $pagesize 每页几条

* @param string $pkey url中页面变量名称

* @param string $url 基础url,其中的{page}会被替换为页码

* 依赖函数 request_uri httpInt

*/

function page($total,$pagesize=10,$pkey='p',$url=null){

$a_num=10;

$first=' 首页 ';

$last=' 尾页 ';

$pre=' 上页 ';

$next=' 下页 ';

$a_num=$a_num%2==0?$a_num+1:$a_num;

if(!$url){

$url=preg_replace("/&?{$pkey}=[^&]{0,}/", '',request_uri());

$url=strpos($url, '?')===FALSE?$url.'?'.$pkey.'={page}':$url.'&'.$pkey.'={page}';

}

$pages=ceil($total/$pagesize);

$curpage=httpInt($pkey,false,1);

$curpage=$curpage>$pages||$curpage< =0?1:$curpage;#当前页超范围置为1

$body='';$prefix='';$subfix='';

$start=$curpage-($a_num-1)/2;#开始页

$end=$curpage+($a_num-1)/2; #结束页

$start=$start<=0?1:$start; #开始页超范围修正

$end=$end>$pages?$pages:$end;#结束页超范围修正

if($pages>=$a_num){#总页数大于显示页数

if($curpage< =($a_num-1)/2){$end=$a_num;}//当前页在左半边补右边

if($end-$curpage<=($a_num-1)/2){$start-=5-($end-$curpage);}//当前页在右半边补左边

}

for($i=$start;$i<=$end;$i++){

if($i==$curpage){

$body.=''.$i.'';

}else{

$body.=''.$i.'';

}

}

$prefix=($curpage==1?'':''.$first.''.$pre.'');

$subfix=($curpage==$pages?'':''.$next.''.$last.'');

$info=" 第{$curpage}/{$pages}页 ";

$go=' 转到';

return $prefix.$body.$subfix.$info.$go;

}

/**

* 说明:获取 _SERVER['REQUEST_URI'] 值的通用解决方案

*/

function request_uri()

{

if (isset($_SERVER['REQUEST_URI']))

{

$uri = $_SERVER['REQUEST_URI'];

}

else

{

if (isset($_SERVER['argv']))

{

$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['argv'][0];

}

else

{

$uri = $_SERVER['PHP_SELF'] .'?'. $_SERVER['QUERY_STRING'];

}

}

return $uri;

}

/**

* 获取HTTP传递的整数

* @param string $key 参数名称

* @param bool $ispost 采取POST传递方式,默认为真

* @return 整数,非法时默认为 $default

*/

function httpInt($key, $ispost=true,$default=0) {

if ($ispost) {

if (isset($_POST[$key])) {

if (empty($_POST[$key])) {

return $default;

} else {

$val = trim($_POST[$key]);

if (preg_match("/^\-?\d+$/", $val)) return intval($val);

else return $default;

}

} else {

return $default;

}

} else {

if (isset($_GET[$key])) {

if (empty($_GET[$key])) {

return $default;

} else {

$val = trim($_GET[$key]);

if (preg_match("/^\-?\d+$/", $val)) {

return intval($val);

} else {

return $default;

}

}

} else {

return $default;

}

}

}

Unique Post

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值