0

这个问题类似,我已经完成了传递带有 url 扩展名的格式,但是您必须预先声明传递的参数。例子:

new Zend_Controller_Router_Route_Regex(
        '([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)(\.(\w+))?',
        array(
            'module'        => 'Default',
            'controller'    => 'index',
            'action'        => 'index',
        ),
        array(
            1    => 'module',
            2    => 'controller',
            3    => 'action',
            4    => 'extension',
            5    => 'format'
        )
);

但是如果我想要 /:module/:controller/:action/*.:format 怎么办?这样无论我通过 url 传递多少参数,'.whatever' 都将是格式参数?基本上,我正在尝试采用默认路由器并将扩展名添加为“格式参数”。

编辑:

问题不在于扩展,问题在于添加其他参数。例如

/blogs/posts/view/post/500/foo/bar/format/html

将转化为:array('module'=>'blogs','controller'=>'posts', 'action' => 'view', 'post'=>500, 'format' => 'html', ' foo' => '酒吧');

但我希望能够以相同的路线表示格式,如下所示:

/blogs/post/view/post/500/foo/bar.html

不管在动作和格式之间声明了多少参数。

4

1 回答 1

0

whatever可以用.*表达式指定。

为了匹配它 - 简单地说:(.*)

如果您不想获取例如扩展名,请使用?

(.*?)(\.(\w+))
于 2011-05-20T14:35:48.243 回答