获取完整的 URL,包括哈希后的查询字符串


getting the full url including the query string after hash

如何在hash tag后获取包括字符串参数的完整URL?我试着回声

$url = $_SERVER['REQUEST_URI'];
echo $url;

hash tag后面的字符串不会读取。

Pekka的评论应该是一个答案。哈希标签后面的字符串参数不会发送到服务器,它仅供浏览器查看。

这意味着服务器端代码(在您的情况下为 PHP(没有此信息。客户端代码(浏览器,javascript等(可以。

理想

  • ? 后面的部分是服务器的信息。把所有东西都放在你的服务器需求在这里
  • # 后面的部分是客户端的信息。把所有东西都放在你的客户的需求在这里。它被称为片段标识符(感谢蒂姆(。

从历史上看,# 后面的部分最常用于让浏览器快速滚动到页面上定义的锚点。如今,它更常用于保存客户端的状态信息。

您可以让 javascript 将此信息发送到服务器,或根据此信息执行不同的操作。AJAX是你的朋友。

哈希(包括#的字符串(永远不会传递到服务器,它只是浏览器的行为属性。但是,$_SERVER['REQUEST_URI']变量将包含其余部分。

如果你真的需要知道哈希是什么,你必须使用 document.location.hash JavaScript 属性,它包含哈希的内容(然后你可以将其插入表单中,或者通过ajax请求将其发送到服务器(。可以使用将该URL发送到Ajax终结点的Javascript onload function传递完整的 URL,包括定位点(# 之后的部分(。

你也可以看看这里 获取整个 URL,包括查询字符串和锚点

使用urlencode()urldecode()函数

在这个简短的示例中,我将向您展示如何将哈希值传递给服务器并使其重定向到哈希值。

首先对链接按钮中的哈希值进行编码

<a href="mylink.php?redirect=link1<?= urlencode("#tab5") ?>">redirect to Link1 </a>

现在从服务器重定向到链接我的链接.php

if ($_GET["redirect"] != null )
    {
        header("location: urldecode($_GET["redirect"]);
    }