1

アプリケーションでルートを作成していますが、URL のスラッシュを API のアンダースコアに変換できるかどうか疑問に思っていました。

これが私がやりたいことの例です:

http://www.example.dev/api/v1/test/supertest.json?id=7&test=whatever

私のルートでは、次のように解釈する必要があります。

http://www.example.dev/api/test_supertest/format/json?id=7&test=whatever

フォーマットとバージョンについては成功しましたが、については成功しませんでしたtest_supertest

これが私の実際のルートです:

$route['api/'.config_item('rest_api_version').'/(:any)'.'(/.*)'.'(\.:any)'.'(:any)'] = 'api/$1_$2$4&format=$3';

スラッシュをアンダースコアに変換するにはどうすればよいですか?

4

1 に答える 1

2

ルート:

$route['api/' . config_item('rest_api_version') . '/([^/]+)/([^.]+)\.([^?]+)\?(:any)'] = 'api/$1_$2/format/$3?$4';

正規表現の内訳:

  1. api/' . config_item('rest_api_version') . '/一致する API バージョン

  2. ([^/]+)ではない 1 つ以上の文字に一致します。/

  3. /抹茶/

  4. ([^.]+)ではない 1 つ以上の文字に一致します。.

  5. \.抹茶.

  6. ([^?]+)ではない 1 つ以上の文字に一致します。?

  7. \?抹茶?

  8. (:any)任意の文字に一致

置換内訳:

api/$1_$2/format/$3?$4

$1上記のリスト項目 2 の一致に置き換えられます

$2上記のリスト項目 4 の一致に置き換えられます

$3上記のリスト項目 6 の一致に置き換えられます

$4上記のリスト項目 8 の一致に置き換えられます

結果:

http://www.example.dev/api/v1/test/supertest.json?id=7&test=whatever

なる

http://www.example.dev/api/test_supertest/format/json?id=7&test=whatever

于 2013-04-10T11:34:26.700 に答える