• 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 }

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

  • 相关阅读:
    贪心策略---不重叠的区间个数
    贪心策略---分配饼干
    双指针---最长子序列
    双指针---回文字符串
    双指针---反转字符串中的元音字符
    双指针---两数平方和
    双指针---有序数组的TWO SUM
    排序---小结
    排序---桶排序
    变量的解构赋值
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/2954678.html
Copyright © 2020-2023  润新知