无限参数获得最后一个

时间:2016-05-09 09:15:12

标签: php .htaccess codeigniter codeigniter-3

我正在使用codeigniter。如何获取我的网址的最后一部分,如:

  

www.example.com/uk-en/category/subcategory

参数可以是无限的,也可以只有一个。在我的Controller Home和方法索引中,我只想要url的最后一部分,例如“subcategory”

  1. 如果网址是www.example.com/uk-en/category我想要“类别”
  2. 如果网址是www.example.com/uk-en我想要“uk-en”
  3. 修改

    如果网址是www.example.com/Home/index/uk-en/category那么它正在工作
    但我想要的是没有类名“Home”和方法“index”

    像这样www.example.com/uk-en/category

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    class Home extends CI_Controller{
        public function index($params=[]){
          $params=func_get_args();
         $last=end($params);
         echo $last;
        }
    }
    ?>
    

    routes.php

       <?php
        defined('BASEPATH') OR exit('No direct script access allowed');
        $route['(:any)'] = 'Home/index';
        $route['default_controller'] = 'Home';
        $route['404_override'] = 'error_404/index';
        $route['translate_uri_dashes'] = FALSE;
        ?>  
    

    .htaccess

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [QSA,L]
    

2 个答案:

答案 0 :(得分:1)

在你的溃败中使用它

$route['(.*)'] = "Home/index";

这将在索引函数中打印控制器中的所有路径

print_r($this->uri->segment_array());

答案 1 :(得分:0)

您的路线中的问题是首先设置通配符占位符。它总是需要在最后的位置。

  

路线将按照定义的顺序运行。较高的路线总是优先于较低的路线。

$route['default_controller'] = 'Home';
$route['404_override'] = 'error_404/index';
$route['translate_uri_dashes'] = FALSE;

//some example routes
$route['specific/route'] = 'controller/method';
$route['specific/(:num)'] = 'page/show/$1';

//always put your wildcard route at the end of routes.php file
$route['(:any)'] = 'home/index';

Docs