我想匹配一個URL,如;如何在最後匹配一個帶有可選「/」的字符串?
http://www.testing.com/documents/dashboard
我想是要匹配 「/文件/儀表板」 或 「/文件/儀表/」。如何做到這一點?
preg_match('/^\/documents\/dashboard[\/|]$/i', $_SERVER['REQUEST_URI']);
這不行?我應該在[]塊中的管道(|)字符之後輸入什麼以覆蓋「無」?
我想匹配一個URL,如;如何在最後匹配一個帶有可選「/」的字符串?
http://www.testing.com/documents/dashboard
我想是要匹配 「/文件/儀表板」 或 「/文件/儀表/」。如何做到這一點?
preg_match('/^\/documents\/dashboard[\/|]$/i', $_SERVER['REQUEST_URI']);
這不行?我應該在[]塊中的管道(|)字符之後輸入什麼以覆蓋「無」?
[\/|]$
是錯誤的,因爲[]
創建一個字符類。所以你匹配的是/
或|
,後面跟着字符串的結尾。做你所想的:
preg_match('~^/documents/dashboard(/|$)$~', $_SERVER['REQUEST_URI']);
雖然我認爲它更易於使用:
preg_match('~^/documents/dashboard/?$~', $_SERVER['REQUEST_URI']);
/?
指1或0次匹配/
字符。
提示:如果使用/
以外的分隔符,則不必在模式中轉義正斜槓。
preg_match('/^\/documents\/dashboard\/?$/i', $_SERVER['REQUEST_URI']);
人們經常在它們的正則表達式的末尾使用它,但它實際上可以在任何地方使用。雖然在你的情況下,使用?
量詞更簡單。
或者,如果你絕對要使用$
,下面將工作太:
/^\/documents\/dashboard(\/|$)$/i
http://stackoverflow.com/search?q=url+regex – Incognito
對不起,我是配合緊密太倉促選項,無視這一點。 – Incognito
「This does not work」>。< –