如何在URL
之后获取包含字符串参数的完整hash tag
?我试着回应
$url = $_SERVER['REQUEST_URI'];
echo $url;
hash tag
之后的字符串。
答案 0 :(得分:9)
佩卡的评论应该是一个答案。 哈希标记之后的字符串参数未发送到服务器,仅适用于浏览器眼睛。
这意味着服务器端代码(在您的情况下为PHP)没有此信息。客户端代码(浏览器,javascript,...)可以。
理想地,
历史上,#之后的部分最常用于让您的浏览器快速滚动到页面上定义的锚点。如今,它更常用于保存客户的状态信息。
您可以让javascript将此信息发送到服务器,或根据此信息执行不同的操作。 AJAX是你的朋友。
答案 1 :(得分:1)
哈希(包含#的字符串)永远不会传递给服务器,它只是浏览器的行为属性。 $_SERVER['REQUEST_URI']
变量将包含其余部分。
如果您确实需要知道哈希是什么,则必须使用document.location.hash
JavaScript
属性,该属性包含哈希的内容(然后您可以将其插入表单中,或者使用ajax
请求将其发送到服务器。您可以使用发送Javascript onload function
的{{1}}来传递完整的网址,包括锚点(#后面的部分) URL
端点。
答案 2 :(得分:0)
使用urlencode()
和urldecode()
函数
在这个简短的示例中,我将向您展示如何将哈希值传递给服务器,并使它重定向到哈希值。
首先在链接按钮中编码哈希值
<a href="mylink.php?redirect=link1<?= urlencode("#tab5") ?>">redirect to Link1 </a>
现在从服务器重定向到链接 mylink.php
if ($_GET["redirect"] != null )
{
header("location: urldecode($_GET["redirect"]);
}