PHP中等效的escape(window.location.href)

时间:2012-02-27 09:46:46

标签: php url

我尝试了很多组合来获取我的网页的正确路径,例如javascript代码

escape(window.location.href)

我试过这个:

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]$_SERVER[QUERY_STRING]";

但它返回的内容如下:

http://www.mydomain.com/node/4158?asdf=1asdf=1

当实际页面为:

http://www.mydomain.com/node/4158?asdf=1

如果我有这个网址:http://www.mydomain.com/node/4158#comments,例如结果是:

http://www.mydomain.com/node/4158

即。没有“#comments”

5 个答案:

答案 0 :(得分:3)

片段标识符#完全由客户端处理。浏览器不会将其发送到服务器,因此PHP无法访问它。

找出它的唯一方法是在发出HTTP请求的页面中包含JavaScript,包括完整的URI。

答案 1 :(得分:0)

尝试

$url = $_SERVER['REQUEST_URI'];

答案 2 :(得分:0)

$_SERVER['QUERY_STRING']$_SERVER['REQUEST_URI']的子字符串 - 您只需要后者。但是,不要自己构建网址,只需使用$_SERVER['SCRIPT_URI']

此外,由于您的应用程序是服务器端,并且片段标识符(来自#的所有内容)未包含在HTTP请求中,因此无法通过php代码访问它。

答案 3 :(得分:0)

$location = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80") {
    $location .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
    $location .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
echo $location;

答案 4 :(得分:0)

很多人说这个片段在这里是客户端,但根据文档parse_url将返回片段(如果存在)(参见链接中的第一个例子)。