我正在將舊網站轉換爲CodeIgniter,其中涉及保留一些舊的URL。我需要能夠傳遞單個字符,無論是#,A-Z還是a-z。這是我的模式:在CodeIgniter路由中使用RegEx
/^[a-zA-Z#]$/
它通過傳遞給preg_match()似乎在我所有的測試中工作得很好。我只是把它添加到這樣的CI路線:
$route['(:any)/(/^[a-zA-Z#]$/)'] = "collection/view/$1/alpha/$2";
,它是給我這個錯誤:
Message: preg_match(): Unknown modifier '/'
我不能爲我的生命按摩這種模式,讓CI接受它。我認爲它被奇怪地逃脫了。任何幫助,將不勝感激。
UPDATE:
我一頭到/core/Router.php只是爲了看看CI與模式做。以下是CI正在使用的內容:
#^(.+)/(/^[a-zA-Z\#]$/)$#
它將整個傳遞的字符串轉換爲一個大型模式。
解決:
搞清楚的是CI試圖創建一個大的格局後,我改寫了從無到有的模式和刪除(:任何)。我也用#代替了#。這是我的最終解決方案:
$route['(^(.+)/([a-zA-Z\+]$))'] = "collection/view/$2/alpha/$3";
如果任何人有一個更優雅的模式,請隨時張貼它。謝謝!
'#'是一個URL特殊字符,我不認爲你可以用它的路線,因爲服務器不能讀它,或任何後面的東西。 – 2013-02-28 05:41:50
我認爲我也是這樣刪除了#並試圖用a-zA-Z進行測試,但仍未找到匹配結果。 – madzilla 2013-02-28 14:30:59