【问题标题】:CodeIgniter -> Get current URL relative to base urlCodeIgniter -> 获取相对于基本 url 的当前 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”,第二个调用返回“”。有这样的功能吗?

【问题讨论】:

    标签: codeigniter function url


    【解决方案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
                  

                  这对我有用

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-09-23
                    • 2022-07-10
                    • 1970-01-01
                    • 2011-02-02
                    • 1970-01-01
                    相关资源
                    最近更新 更多