ZF2 分段路由约束正则表达式


ZF2 segmented route constraint regex

我正在开发一个 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并非在所有情况下都匹配。

欢迎任何帮助!

谢谢!

要匹配除换行符以外的任何字符,您始终可以依靠贪婪的点匹配模式:

.*

此模式可以匹配空字符串,因此,如果您不希望这样做,请将*(表示 *零次或多次出现)替换为+量词(表示一次或多次出现)。