用于改变URL的PHP​​交换机案例

时间:2012-06-12 14:14:50

标签: php codeigniter switch-statement

我正在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':

2 个答案:

答案 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开头的所有网址共有的代码。不确定这是否是必需的,但可能有用