如何在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"]);
}