我正在CodeIgniter框架上构建一个站点,我正在使用PHP开关来加载与页面相关的特定javascript。当我到达第3个URI段时,我的问题就来了,它通常是一个变量。比如说我没有问题
case 'foo/bar':
但如果我的网址类似于http://mysite.com/foo/bar/1234,那么1234如果一个变量传递给控制器。为每个变量写一个案例显然没有意义,因为现在大约有30k。
目前这是我的代码的工作片段......
switch( $this->uri->uri_string() ) {
case '':
break;
case 'browse':
break;
case 'contest/leaderboard':
答案 0 :(得分:0)
那么你使用“开始于”条件:
$uri = $this->uri->uri_string();
if (0 === strpos($uri, 'foo/bar')) {
// starts with foo/bar
} elseif (0 == strpos($uri, .... etc
答案 1 :(得分:0)
您还可以在正斜杠上展开网址,然后检查数组的每个元素。
例如
$url_parts = explode('/', $this->uri->uri_string());
switch($url_parts[0]){
case 'foo':
if(count($url_parts) > 1){
if($url_parts[1] == "bar"){
// when the url begins with foo/bar
}
}
break;
case 'browse':
//when url is browse
break;
}
这样做的好处是,您可以包含以foo开头的所有网址共有的代码。不确定这是否是必需的,但可能有用