1
我在ZF2應用程序的工作,我需要這樣的路線: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
並沒有在所有的情況下匹配。
歡迎任何幫助!
謝謝!
如果路徑必須匹配任何東西,用'。*'或'。+'替換模式,或者(如果除'/'之外應該有其他東西) - ''[^ /] *' –
好!按預期工作。首先,我嘗試了'[\ s \ S] *',這也是可行的,但'。*'似乎更清晰。感謝那。將您的評論轉換爲答案,以便我可以接受! :) – Marco
我不確定我是否正確地閱讀了這個問題,但爲什麼在'path'部分使用任何約束?你的目標不是讓這部分不受約束嗎? – Sebi