PHP 分页URL设计

2013年3月11日 21:08:06

之前的分页是http://http://www.cnblogs.com/iLoveMyD/xxx.html?page=123&....

现在是http://http://www.cnblogs.com/iLoveMyD/xxx/123.html?....

就是以路径的方式改写分页URL

分页类在网上到处都是,这里分享下我写的组装这样URL的程序

大致过程是在URL中需要写上分页数字的地方去掉原来页码用<*page*>这个字符串来占位,然后交给你自己的分页类来用需要的页码替换掉这个特殊的字符串

原来URL:xxxxx/2.html

点击下一页后:xxxxx/<*page*>.html(去掉那个2)

交给分页类处理后URL:xxxxx/3.html

public function setPage($count, $curPage, $pageSize, $maxPage, $url)
{if (strpos($url, '.html') !== false) {//url中包含.html(此时不考虑?的情况)***/zzz-11/14.html
        $tempurl = explode('.html', $url);
        $tempurl[0] = rtrim($tempurl[0], '/');
        if (!empty($page)) {//如果URL中有分页的数据,就将他删去
            //去除url中的分页参数
            $temp = explode('/', $tempurl[0]);
            array_pop($temp);
            $tempurl[0] = implode('/', $temp);
        }
        $tempurl[0] = $tempurl[0].'/<{*page*}>';
        $url = implode('.html', $tempurl);
    } elseif(strpos($url, '?') !== false) {//url中没有html就判断是否有?存在 ***/zzz-11?key=value&key=value
        $tempurl = explode('?', $url);
        $tempurl[0] = rtrim($tempurl[0], '/');
        if (!empty($page)) {
            //去除url中的分页参数
            $temp = explode('/', $tempurl[0]);
            array_pop($temp);//删除URL中的分页参数
            $tempurl[0] = implode('/', $temp);
        }
        $tempurl[0] = $tempurl[0].'/<{*page*}>/';
        $url = implode('?', $tempurl);
    } else {//既没有html又没有? ***/cate-11/
        $url = rtrim($url,'/');
        if (!empty($page)) {
            //去除url中的分页参数
            $temp = explode('/', $url);
            array_pop($temp);//删除URL中的分页参数
            $url = implode('/', $temp);
        }
        $url = $url.'/<{*page*}>/';
    }
  return $url;
}


其中的!empty($page);使用来判断URL中是否有page页码,你也可以换成其它语句,如果URL中有page页码,才将其去掉,换上特殊字符串<*page*>

但有时候,你只是想要这种不带分页的URL(在你确定URL中用分页的参数时,再用下边程序)

 1 public function rmpage($url)
 2 {
 3     if (empty($this->data['page'])) {
 4         return $url;
 5     }
 6     if (strpos($url, '.html') !== false) {//url中包含.html(此时不考虑?的情况)***/zzz-11/14/2.html
 7         $tempurl = explode('.html', $url);
 8         $tempurl[0] = rtrim($tempurl[0], '/');
 9         //去除url中的分页参数
10         $temp = explode('/', $tempurl[0]);
11         array_pop($temp);//分页和路由的时候已经保证分页参数一定在最后
12         $tempurl[0] = implode('/', $temp);
13         $url = implode('.html', $tempurl);
14     } elseif(strpos($url, '?') !== false) {//url中没有html就判断是否有?存在 ***/zzz-11/2/?key=value&key=value
15         $tempurl = explode('?', $url);
16         $tempurl[0] = rtrim($tempurl[0], '/');
17         //去除url中的分页参数
18         $temp = explode('/', $tempurl[0]);
19         array_pop($temp);
20         $tempurl[0] = implode('/', $temp);
21         $tempurl[0] = $tempurl[0].'/';
22         $url = implode('?', $tempurl);
23     } else {//既没有html又没有? ***/cate-11/
24         $url = rtrim($url,'/');
25         //去除url中的分页参数
26         $temp = explode('/', $url);
27         array_pop($temp);
28         $url = implode('/', $temp);
29     }
30      
31     return $url;
32 }

之前贴的程序没有加行号,才知道怎么加

 

posted @ 2013-03-11 21:25  myD  阅读(1321)  评论(0编辑  收藏  举报