获取请求URI PHP

时间:2012-11-20 16:27:53

标签: php wordpress

我很高兴在我的wordpress应用程序中获取URI并且缺乏PHP知识使我的进度变慢。 我有这个网址

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

我需要创建类似

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

其中http://abc.com/my-blog是我的wordpress博客的网址,我可以轻松使用以下方法

home_url()

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

/my-blog/abc/cde

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

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

  1. 主页网址
  2. 网址的其余部分
  3. 所以最后我可以做以下

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

    我的困惑点

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

5 个答案:

答案 0 :(得分:2)

非常简短:

<?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);

答案 1 :(得分:0)

好的,如果$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;

应打印:

  

MY-博客/ MIDDLEBIT / ABC / CDE /

答案 2 :(得分:0)

您可能想要使用explode或其他一些字符串函数。以下是一些例子:

  $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"]);

答案 3 :(得分:0)

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

    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);
    }

答案 4 :(得分:-1)

您可以使用wordpress使用get_home_url()

将主页面存储在变量中
$home_url = get_home_url();

$custom_value = '/SOME_VALUE';

$uri = $_SERVER['REQUEST_URI'];

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