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 回答