PHP 分页URL设计

简介: 2013年3月11日 21:08:06 之前的分页是http://http://www.cnblogs.com/iLoveMyD/xxx.html?page=123&.... 现在是http://http://www.

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实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
7月前
|
小程序 前端开发 PHP
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
109 0
|
8天前
|
SQL 前端开发 PHP
【PHP开发专栏】PHP分页功能的设计与实现
【4月更文挑战第29天】本文介绍了PHP实现分页功能,包括设计逻辑(用户界面和后端处理)、SQL查询优化和前端展示。后端通过计算页码和偏移量进行数据查询,前端展示分页信息并处理用户交互。优化点有使用索引、LIMIT语句和避免子查询。此外,还提到了无限滚动、AJAX分页和分页大小选择等高级功能,以提升用户体验。
|
10月前
|
存储 JSON PHP
在 PHP 中从 URL 获取 JSON 对象
在 PHP 中从 URL 获取 JSON 对象
|
5月前
|
PHP Python
PHP2(phps)- URL编码解码原理
PHP2(phps)- URL编码解码原理
49 0
|
8月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql 分页数据案例
PHP 原生操作 Mysql 分页数据案例
98 1
|
10月前
|
JSON 前端开发 安全
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式)
186 0
|
10月前
|
JSON 安全 关系型数据库
php传递url参数加密验证的解决方案(加密解密、安全验证过滤)
php传递url参数加密验证的解决方案(加密解密、安全验证过滤)
256 0
|
10月前
|
前端开发 JavaScript 关系型数据库
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)
495 0