私はコードイグナイターを使用していて、$routes配列を介して複数のURLセグメントをキャプチャしようとしています。
たとえば、私の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';
これは明らかにかなり冗長です。最終的には、すべてのセグメントを1つの正規表現でキャプチャしたいと思います。
考え?