使用URI路由将斜杠转换为下划线

时间:2013-04-10 10:17:51

标签: regex codeigniter routes

我在我的应用程序中创建路由,我想知道它是否可以将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';

如何将斜杠转换为下划线?

1 个答案:

答案 0 :(得分: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)匹配任何字符

  9. 替换细分:

    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