1

我正在 CodeIgniter 框架上构建一个站点,并且我正在使用 PHP 开关来加载与页面相关的特定 javascript。当我到达第三个 URI 段时,我的问题就出现了,这通常是一个变量。例如,我对说没有意见

case 'foo/bar':

但是如果我的 url 类似于http://mysite.com/foo/bar/1234,其中 1234 如果变量传递给控制器​​怎么办。为每个变量写一个案例显然是没有意义的,因为现在大约有 30k。

目前这是我的代码的工作片段......

switch( $this->uri->uri_string() ) {

            case '': 

            break;

            case 'browse':

            break;

            case 'contest/leaderboard':
4

2 回答 2

0

那么你使用“开始于”条件:

$uri = $this->uri->uri_string();
if (0 === strpos($uri, 'foo/bar')) {
    // starts with foo/bar
} elseif (0 == strpos($uri, .... etc
于 2012-06-12T14:18:53.437 回答
0

您还可以分解正斜杠上的 url,然后检查数组的每个元素。

例如

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

于 2012-06-12T14:31:05.833 回答