26

尝试过URI::uri_string()但无法使其与 base_url 一起使用。

网址:http://localhost/dropbox/derrek/shopredux/ahahaha/hihihi
返回:dropbox/derrek/shopredux/ahahaha/hihihi

http://localhost/dropbox/derrek/shopredux/只返回一个空字符串。

我希望第一个调用返回“ahahaha/hihihi”,第二个调用返回“”。有这样的功能吗?

4

11 回答 11

66
// For current url
echo base_url(uri_string());
于 2014-01-21T16:50:17.520 回答
39

如果url加载了帮助程序,请使用

current_url();

会更好

于 2014-08-30T06:32:31.090 回答
13

对于参数或不带参数的 URL,请使用:

方法一:

 $currentURL = current_url(); //for simple URL
 $params = $_SERVER['QUERY_STRING']; //for parameters
 $fullURL = $currentURL . '?' . $params; //full URL with parameter

方法二:

$full_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

方法三:

base_url(uri_string());
于 2017-11-29T09:11:09.210 回答
12

尝试使用“uri”段,如:

$this->uri->segment(5);   //To get 'ahahaha'
$this->uri->segment(6);   //To get 'hihihi

形成您的第一个 URL ...您也从第二个 URl 获得 '' 段(5),段(6)也因为它们是空的。

每个段函数计数从 localhost 开始为“1”和同步段

于 2012-09-04T04:11:42.240 回答
10

我看到这个帖子很旧。但在 CI v3 版本中,答案是:

echo $this->uri->uri_string();

谢谢

于 2017-03-02T19:56:23.580 回答
5
 //if you want to get parameter from url use:
 parse_str($_SERVER['QUERY_STRING'], $_GET);
 //then you can use:
 if(isset($_GET["par"])){
      echo $_GET["par"];
 }
 //if you want to get current page url use:
 $current_url = current_url();
于 2013-05-20T11:14:57.733 回答
3

运行最新的 Code Igniter 3.10

$this->load->helper('uri'); // or you can autoload it in config

print base_url($this->uri->uri_string());
于 2019-08-10T14:43:35.170 回答
0

我不知道是否有这样的函数,但是使用 $this->uri->uri_to_assoc() 你可以从 $_GET 参数中得到一个关联数组。有了这个,以及你所在的控制器,你就知道 URL 的样子了。在您上面的 URL 中,这意味着您将在控制器保管箱中,并且数组将是这样的:

array("derrek" => "shopredux", "ahahaha" => "hihihi");

有了这个,您应该能够自己制作这样的功能。

于 2012-09-03T13:54:46.423 回答
0

您可以使用一些 Codeigniter 功能和一些核心功能,并结合使用查询字符串来实现您的 URL。我找到了这个问题的解决方案。

base_url($this->uri->uri_string()).strrchr($_SERVER['REQUEST_URI'], "?");

如果您加载了 URL 帮助程序,那么您也可以这样做current_url().strrchr($_SERVER['REQUEST_URI'], "?");

于 2020-12-10T12:09:26.837 回答
0

在 CI v3 中,您可以尝试:

function partial_uri($start = 0) {
    return join('/',array_slice(get_instance()->uri->segment_array(), $start));
}

这将删除$start参数指定的 URL 段数。如果您的网址是http://localhost/dropbox/derrek/shopredux/ahahaha/hihihi,则:

partial_uri(3);  # returns "ahahaha/hihihi"
于 2019-03-08T11:24:58.937 回答
0
<?php $currentMenu =  $this->uri->segment(2); ?>
<ul>
   <li class="nav-item <?= ($currentMenu == 'dashboard') ?  'active' : '' ?>"> 
       <a href="<?= site_url('/admin/dashboard'); ?>" class="nav-link"><i data- 
         feather="pie-chart"></i> Dashboard</a>

   </li>
</ul

这对我有用

于 2021-06-09T14:18:06.380 回答