1
我正在使用代碼點火器,並試圖通過$ routes數組捕獲多個url段。regexp codeigniter的子組匹配
例如,我的URL看起來像這樣:
/segment-1/segment-2/keyword/
我一直在試圖用眼前這個正則表達式:
$route['([\w-?]+){1,3}'] = "my/method";
但只返回這個小組的比賽:
segment-1
然後當我嘗試這條路線:
(\/[\w-?]+){1,3}
它返回的分組比賽:
/keyword
所以我一直明確地把我要確保我捕捉到所有的情況下,精確的路線:
$route['([\w-?]+)'] = 'my/method/$1';
$route['([\w-?]+)/([\w-?]+)'] = 'my/method/$1/$2';
$route['([\w-?]+)/([\w-?]+)/([\w-?]+)'] = 'my/method/$1/$2/$3';
這顯然是相當詳細。最終,我想在一個正則表達式中捕獲所有的段。
想法?
雖然這不是確切的答案,但它非常接近,所以我會無論如何給你=)。這裏是我最後寫的,以使我的路線正確匹配:'$ route ['somekey(/([\ w - ?] +))?(/([\ w - ?] +))?(/( [\ w - ?] +))?'] ='我的/方法/ $ 2/$ 4/$ 6';'。我使用了'$ 2','$ 4','$ 6' b/c我已經做了子組匹配來忽略我的初始匹配上的'/'字符,並最終使所有的段都是可選的。 – hellatan