function getSearchUrl($arr = array())
{
    static $_url = array();
    if (!$_url) {
        $url = getUrlStrList(array(), true);
        unset($url['g'], $url['c'], $url['m']);
        $_url = $url;
    }
    $url = $_url;
    if ($arr) {
        foreach ($arr as $key => $val) {
            if (!is_null($val)) {
                $url[$key] = $val;
            } elseif (isset($url[$key])) {
                unset($url[$key]);
            }
        }
    }
    return $url;
}
function page($total, $page, $showId = '', $pageSize = 20, $mypage = 'p', $url = '', $maxLength = 5)
{
    $page = intval($page);
    $page = $page < 1 ? 1 : $page;
    $start = ($page - 1) * $pageSize;
    $totalPage = ceil($total / $pageSize);
    $totalPage = $totalPage < 1 ? 1 : $totalPage;
    $page = $page > $totalPage ? $totalPage : $page;
    $showType = 'href';
    if (!empty($showId)) {
        $showType = 'href="javascript:;" rel';
        $showId .= '_pagebox';
    }
    $urlHome = '';
    //如果$url使用默认,即空值,则赋值为本页URL:
    if (!$url) {
        //        $url = $_SERVER['REQUEST_URI'];
        $urlHome = U(getUrlStrList(array($mypage => null), true));
    }
    //===========解析参数开始,主要为去掉分页标示======
    if (C('System', 'path_mod') == '1' && C('System', 'postfix')) {
        //开启路由模式
        $urlHome = str_replace(C('System', 'postfix'), '', $urlHome);
    } else {
        if (!strExists($urlHome, '?')) {
            $urlHome .= '?';
        } else {
            $urlHome .= '&';
        }
        if (strExists($urlHome, '?&')) {
            $urlHome = str_replace('?&', '?', $urlHome);
        }
    }
    //===========解析参数结束,主要为去掉分页标示======
    $pageTable = '';
    //aways in the pages
    $pageTable = '<div id="' . $showId . '" class="pagebox">';
    $pageTable .= '<span class="total">共 ' . $total . ' 条 <font class="red">' . $page . '</font>/' . $totalPage . '页</span>';
    //显示第一页
    if ($page == 1) {
        $pageTable .= '<span class="nolink">上页</span><span class="nonce">1</span>';
    } else {
        $pageTable .= '<a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $page - 1) . '" target="_self">上页</a><a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, 1) . '" target="_self">1</a>';
    }
    //循环中间页码
    if ($totalPage < $maxLength * 2) {
        $loopStart = 2;
        $loopEnd = $totalPage - 1;
    } else {
        $loopStart = $page - $maxLength;
        $loopStart = $loopStart < 2 ? 2 : $loopStart;
        $loopEnd = $page + $maxLength;
        $loopEnd = $loopEnd < $maxLength * 2 ? $maxLength * 2 : $loopEnd;
        $loopEnd = $loopEnd > $totalPage ? $totalPage - 1 : $loopEnd;
    }
    //... link
    $linkStart = $loopStart - $maxLength < 2 ? 2 : $loopStart - $maxLength;
    $linkEnd = $loopEnd + $maxLength > $totalPage ? $totalPage : $loopEnd + $maxLength;
    if ($loopStart > 2) {
        $pageTable .= '<a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $linkStart) . '" target="_self">...</a>';
    }
    //中间链接
    for ($i = $loopStart; $i <= $loopEnd; $i++) {
        if ($page == $i) {
            $pageTable .= '<span class="nonce">' . $i . '</span>';
        } else {
            $pageTable .= '<a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $i) . '" target="_self">' . $i . '</a>';
        }
    }
    if ($loopEnd < $totalPage - 1) {
        $pageTable .= '<a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $linkEnd) . '" target="_self">...</a>';
    }
    //末页链接
    if ($totalPage != 1) {
        if ($page == $totalPage) {
            $pageTable .= '<span class="nonce">' . $totalPage . '</span><span class="nolink">下页</span>';
        } else {
            $pageTable .= '<a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $totalPage) . '" target="_self">' . $totalPage . '</a><a ' . $showType . '="' . _mkpageurl($urlHome, $mypage, $page + 1) . '" target="_self">下页</a>';
        }
    } else {
        $pageTable .= '<span class="nolink">下页</span>';
    }
    $pageTable .= '</div>';
    //输出分页代码
    return $pageTable;
}