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中的url获取#jumper部分? [复制]