我正在开发一个ZF2应用程序,我需要这样的路由:
'storage-deliver' => array(
'type' => 'Segment',
'options' => array(
'route' => '/storage/:uuid/:path',
'constraints' => array(
'uuid' => '[a-zA-Z0-9-]*',
'path' => '[a-zA-Z0-9-_\./\+]*'
),
'defaults' => array(
'controller' => 'StorageController',
'action' => 'deliver',
)
)
)
路线应该能够匹配uuid
约束后面的任何路线。
示例:
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/some.file
/storage/0e529c8b-2403-40c1-a5bf-c6819e992079/an/undefined/depth/path/to/some.file
我知道uuid约束不正确,但这与我现在的问题无关。问题是定义的约束path
。它应该能够匹配给定URL的其余部分。
到目前为止,给定的定义[a-zA-Z0-9-_\./\+]*
起作用(至少对于我使用的示例),但我很确定有一种方法可以更好地完成这项工作(以及真正匹配的方式)所有有效的可能性!)。
在这里的其他地方我找到了以下路线示例:
/storage/:uuid/:path{-}
首先,一切看起来都不错,但path
在所有情况下都不匹配。
欢迎任何帮助!
谢谢!
答案 0 :(得分:1)
要匹配除换行符之外的任何字符,您始终可以依赖贪婪的点匹配模式:
.*
此模式可以匹配空字符串,因此,如果您不想这样,请用*
量词替换+
(这意味着*零次或多次出现)(意思是一个或多个出现)。