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 并非在所有情况下都匹配。

欢迎任何帮助!

谢谢!

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

.*

这个模式可以匹配一个空字符串,所以,如果你不想这样,用 + 量词(意思是 一次或多次出现).