Php 在管线上定义多个可选参数

Php 在管线上定义多个可选参数,php,routing,Php,Routing,目前我在我的项目中使用AltoRouter,我需要一个路由,该路由可以匹配具有随机顺序的不同可选参数。我重写了AltoRouter类,使用XML+添加的特性重用参数,如: <parameter name="page" match="[i:page]"/> <route match="/blog" ...> <use param="page"/> </route> 这将同时匹配/blog和/blog/2 现在我需要一个类似于/blog

目前我在我的项目中使用AltoRouter,我需要一个路由,该路由可以匹配具有随机顺序的不同可选参数。我重写了AltoRouter类,使用XML+添加的特性重用参数,如:

<parameter name="page" match="[i:page]"/>

<route match="/blog" ...>
    <use param="page"/>
</route>

这将同时匹配
/blog
/blog/2

现在我需要一个类似于
/blog/[I:page]/[desc | asc:order]/[new | popular:sort]
它可以匹配URI,比如
/blog/2/new
/blog/desc/2
,或者只是
/blog/2、/blog/new


是否可以为此类URI定义单一路由(即使使用不同的路由器,如Symfony)?如果没有,应该如何设置多个规则来匹配这些URI?

找到了一个解决方案:所有可选参数都应该传递给控制器的操作。这样的路由可以用AltoRouter定义,如下所示:
/blog/[**:params]
。此路由将与/blog/和URL的其余部分匹配为$params。例如,URL为/blog/2/desc/new,控制器的操作将以$params的形式获取“2/desc/new”,可以使用explode(“/”,$params)解析并根据需要进行处理