我在我的应用程序中创建路由,我想知道它是否可以将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';
如何将斜杠转换为下划线?
答案 0 :(得分:2)
<强>路线:强>
$route['api/' . config_item('rest_api_version') . '/([^/]+)/([^.]+)\.([^?]+)\?(:any)'] = 'api/$1_$2/format/$3?$4';
正则表达式细分:
api/' . config_item('rest_api_version') . '/
匹配API版
([^/]+)
匹配1个或多个不是/
的字符
/
匹配/
([^.]+)
匹配1个或多个不是.
的字符
\.
匹配.
([^?]+)
匹配1个或多个不是?
的字符
\?
匹配?
(: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