分页函数

/**
 * 分页处理
 * @param int $item_num
 * @param int $page_per
 * @param int $page_now
 * @param string $url
 * @return array array( limit=>array(),html=>string)
 */
function page( $item_num, $page_per, $page_now = 0, $url = '' )
{
    //配置
    $link_num = 5;         //显示页面个数
    $search   = '{page}';   //替换字符 /list/p-{page}
    $var_name = 'p';        //页面参数名称
    $page_max = 50;         //最大页码

    //数据处理
    if( $page_now == 0 ) $page_now = empty($_GET[$var_name]) ? 1 : $_GET[$var_name];
    $page_num = ceil( $item_num / $page_per );
    $page_num < 1 && $page_num = 1;
    if( $page_num > $page_max )
    {
        $page_num = $page_max;
        $page_ps  = '省略部分数据';
    }
    $page_now = min( $page_num, $page_now );
    $page_now = max( 1, $page_now );
    $start = ( $page_now - 1 ) * $page_per;

    if( $page_num == 1 )
    {
        return array(
            'limit' => array($start,$page_per),
            'html'  => '',
            );
    }
   
    //url处理
    if( $url == '' )
    {
        $url = '&'.$_SERVER['QUERY_STRING'];
        $url = preg_replace( "|&$var_name=[^&]*|", '', $url );
        $url = substr( $url, 1 );
        if( $url ) $url .= '&';
        $url = '?'.$url.$var_name.'='.$search;
    }

    //页码处理
    $a = (int) max( $page_now - $link_num/2, 1 );
    $b = min( $a + $link_num, $page_num );
    $a = max( $b - $link_num, 1);

    //生成链接
    $str = '';
    //$str .= "$page_now/{$page_num}页 ";
    if( $page_now > 1 ) $str .= '<a href="'.str_replace($search, $page_now-1, $url).'">上一页</a> ';
    if( $a > 1 ) $str .= '<a href="'.str_replace($search, 1, $url).'">1</a> ';
    if( $a > 2 ) $str .= '... ';
    //else $str .= '首页 ';
    for( $i=$a; $i<=$b; $i++ )
    {
        if( $page_now == $i )
        {
            $str .= "$i ";
        }else
        {
            $str .= '<a href="'.str_replace($search, $i, $url).'">'.$i.'</a> ';
        }
    }
    if( $b < $page_num-1 ) $str .= '... ';
    if( $b < $page_num ) $str .= '<a href="'.str_replace($search, $page_num, $url).'">'.$page_num.'</a> ';
    //$str .= '尾页';
    if( $page_now < $page_num ) $str .= '<a href="'.str_replace($search, $page_now+1, $url).'">下一页</a> ';

    return array(
        'limit' => array($start,$page_per),
        'html'  => $str,
    );
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值