CodeIgniter -> 获取相对于基本 url 的当前 URL

Posted

技术标签:

【中文标题】CodeIgniter -> 获取相对于基本 url 的当前 URL【英文标题】:CodeIgniter -> Get current URL relative to base url 【发布时间】:2012-08-28 06:09:15 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:
// For current url
echo base_url(uri_string());

【讨论】:

需要加载 URL 助手。【参考方案2】:

如果url helper 被加载,使用

current_url();

会更好

【讨论】:

哪个助手?网址助手?这将返回一个完整的路径:想要得到什么-->welcome/home、users/login 类型的 url? 我说错了,抱歉。但$_SERVER['REQUEST_URI'] 可能只是满足上述要求【参考方案3】:

对于参数或不带参数的 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());

【讨论】:

【参考方案4】:

尝试使用“uri”段,例如:

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

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

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

【讨论】:

仅供参考 - 我在使用 CodeIgniter 2.1.3 时发现这些段从 0 开始,而不是答案中提到的 1。例如。 $this->uri->segment(1) for "http://example.com/first/second""first"【参考方案5】:

我看到这篇文章很旧。但在 CI v3 版本中,答案是:

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

谢谢

【讨论】:

【参考方案6】:
 //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();

【讨论】:

【参考方案7】:

运行最新的 Code Igniter 3.10

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

print base_url($this->uri->uri_string());

【讨论】:

【参考方案8】:

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

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

有了这个,你应该可以自己做这样的功能了。

【讨论】:

【参考方案9】:

在 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"

【讨论】:

【参考方案10】:

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

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

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

【讨论】:

【参考方案11】:
<?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

这对我有用

【讨论】:

以上是关于CodeIgniter -> 获取相对于基本 url 的当前 URL的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter Doctrine2基本使用(转)

带有获取参数的codeigniter分页url

如何从codeigniter中的url获取#jumper部分? [复制]

鼠标相对于屏幕的位置鼠标相对于窗口的位置和获取鼠标相对于文档的位置

内容在 CodeIgniter 日历中不可见

获取鼠标点相对于各屏幕窗体和当前控件的位置