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*>这个字符串来占位,然后交给你自己的分页类来用需要的页码替换掉这个特殊的字符串
点击下一页后: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 }
之前贴的程序没有加行号,才知道怎么加