0

私はこのルートを持っています:

$route["((parameter|type|something)-([0-9]+)\/)+"] = 'somecontroller';

だから私がこれでURLをテストするとき:

www.somewebsite.com/parameter-1/

codeigniterはページが見つかりませんというエラーで戻ります。しかし、ここで正規表現をテストしました。

http://rubular.com/

そしてそれは完全にうまくいくようです。

編集:私はまた、先頭/末尾の/を入れてみました:

$route["/((parameter|type|something)-([0-9]+)\/)+/"] = 'somecontroller';

編集:Omega(user)のおかげで、スラッシュ文字(/)がcodeigniterのルート解析エンジンで特別な優先順位または効果を持っているためです。したがって、正規表現の一部である場合は、表示できる回数を表現しているので、理由はわかりません。したがって、これらの演算子{}または?を使用できます。または*または+、または前の式が出現する回数を処理するその他の演算子。したがって、上記のルートでは、?演算子は動作します:

$route["/((parameter|type|something)-([0-9]+)\/)+/?"] = 'somecontroller';

これは明らかにcodeigniter固有の問題です。

4

1 に答える 1

1

パターンに追加?してみてください>>((parameter|type|something)-([0-9]+)\/?)+

于 2012-09-25T00:54:22.787 に答える