【问题标题】:Get Request URI PHP获取请求 URI PHP
【发布时间】:2012-11-08 18:43:24
【问题描述】:

我对在我的 wordpress 应用程序中获取 URI 感到震惊,并且缺乏 PHP 知识使我的进度缓慢。 我有这个网址

http://abc.com/my-blog/abc/cde 

我需要创建一个类似的 URL

http://abc.com/my-blog/added-value/abc/cde

http://abc.com/my-blog 是我的 wordpress 博客的 URL,我可以使用以下方法轻松获取

home_url()

我可以使用 PHP $_SERVER["REQUEST_URI"] 来获取请求 URI,它会显示为

/my-blog/abc/cde

而且我没有直接的方法根据我的要求增加价值

有什么方法可以在 PHP 或 Wordpress 中轻松实现这一点,我可以获得以下信息

  1. 首页网址
  2. 网址的其余部分

所以最后我可以做以下事情

Home-URL+ custom-value+Rest part of the URL

我的困惑

  1. 在我的本地设置$_SERVER["REQUEST_URI"] 给我/my-blog/abc/cde,其中/my-blog 是wordpress 的安装目录,我可以轻松跳过第一级。
  2. 在生产服务器上,它与 /my-blog 不同,不会成为 URL 的一部分。

【问题讨论】:

  • /my-blog/ 总是/my-blog/ 吗?
  • 使用explode() 和一些简单的数组操作。你被困在哪里了?
  • @F4r-20: 不,我的博客会不一样,它的本地 wordpress 设置所以home_url() 给了这个,但在生产上它会给我www.mysite.com
  • @MadaraUchiha:嗯,我没有被打动并同意explode(),我不确定并且印象中可能有一种简单的方法可以做到这一点。
  • 什么是custom-value?如果您使用的是 wordpress,则可能有更好的方法来处理这个问题。你能详细说明你在做什么吗?您是否尝试访问类别、自定义帖子类型、标签、存档等?

标签: php wordpress


【解决方案1】:

您可以将主页 url 存储在变量中,使用 wordpress,使用 get_home_url()

$home_url = get_home_url();

$custom_value = '/SOME_VALUE';

$uri = $_SERVER['REQUEST_URI'];

$new_url = $home_url . $custom_value . $uri;

【讨论】:

    【解决方案2】:

    好的,所以如果$addition 是您想要的中间位,而$uri 是您从$_SERVER["REQUEST_URI"] 获得的,那么这个..

    $addition = "MIDDLEBIT/";
    $uri = "/my-blog/abc/cde";
    
    $parts = explode("/",$uri);
    $homeurl = $parts[1]."/";
    for($i=2;$i<count($parts);$i++){
        $resturl .= $parts[$i]."/";
    }
    echo $homeurl . $addition . $resturl;
    

    应该打印:

    我的博客/MIDDLEBIT/abc/cde/

    【讨论】:

    • 酷,但循环是多余的。
    • 查看我的答案了解详情。
    【解决方案3】:

    非常简短:

    <?php
    
    $url = "http://abc.com/my-blog/abc/cde";
    
    $parts = parse_url($url);
    
    $path = explode("/", $parts["path"]);
    array_splice($path, 2, 0, array("added-part")); //This line does the magic!
    
    echo $parts["scheme"] . "://" . $parts["host"] . implode("/",$path);
    

    【讨论】:

    • 我有点困惑,正如我所描述的 my-blog 是由于安装了 wordpress 而它不会在生产中出现,因此 URL 将显示为 http://abc.com/abc/cde/any length
    • @UmeshAwasthi:在这种情况下,使用 1 代替 2 上的 array_splice。该参数确定插入元素的位置:)
    【解决方案4】:

    您可能想要使用爆炸或其他一些刺痛功能。下面的一些例子:

      $urlBits = explode($_SERVER["REQUEST_URI"]);
    
      //blog address
      $blogAddress = $urlBits[0];
    
      //abc
      $secondPartOfUri = $urlBits[1];
    
      //cde
      $thirdPartOfUri = $urlBits[2];
    
      //all of uri except your blog address
      $uri = str_replace("/my-blog/", "", $_SERVER["REQUEST_URI"]);
    

    【讨论】:

      【解决方案5】:

      这是在 PHP 中获取当前 url 的可靠方法。

          public static function getCurrentUrl($withQuery = true)
          {
              $protocol = stripos($_SERVER['SERVER_PROTOCOL'], 'https') === false ? 'http' : 'https';
              $uri = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
      
              return $withQuery ? $uri : str_replace('?' . $_SERVER['QUERY_STRING'], '', $uri);
          }
      

      【讨论】:

        猜你喜欢
        • 2011-07-31
        • 2011-01-11
        • 2015-06-26
        • 2016-03-14
        • 2011-12-06
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多