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 }

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

 

你可能感兴趣的:(PHP)