/**
* 分页处理
* @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,
);
}