我正在用 PHP 为基于 MVC 的站点重新编写路由处理类,并且需要一个正则表达式来检测 URL 中的分页字符串。分页字符串由三个不同的部分组成;
- 页码检测:
/page/[NUMERIC]/
- 每页项目检测:
/per_page/[NUMERIC]/
- 订货检测:
/sort/[ALMOST_ANY_CHARACTER]/[asc or desc]/
由于之前的开发方式,这三个部分可以按任何顺序排列。我需要继续使用许多现有链接以及用于处理分页的代码(还没有重新编写的计划)-因此不可能更改分页代码以始终生成一致的 url。
因此,我需要构建一个正则表达式模式来检测分页结构的每一种可能组合。我有三种模式来检测每个部分,如下所示:
- 页码检测:
(page/\d+)
- 每页项目检测:
(per_page/\d+)
- 订货检测:
(sort/([a-zA-Z0-9\.\-_%=]+)/(asc|desc))
作为编写复杂的新手(无论如何这对我来说很复杂!)正则表达式模式,我唯一能想到的就是两个结合我对每个 url 结构的三种模式(例如 /pagenum/ordering/perpage/, /pagenum/perpage/ordering/) 并使用 | 运算符作为“或”语句。
有没有更好/更有效的方法来做到这一点?
我正在使用preg_match
.