我正在开发一个 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
并非在所有情况下都匹配。
欢迎任何帮助!
谢谢!
要匹配除换行符以外的任何字符,您始终可以依靠贪婪的点匹配模式:
.*
此模式可以匹配空字符串,因此,如果您不希望这样做,请将*
(表示 *零次或多次出现)替换为+
量词(表示一次或多次出现)。