URL的PHP​​和哈希/片段部分(PHP & Hash / Fragment Portion of

2019-06-26 11:42发布

我试图找到一种方式来保存的网址,并作为一个PHP变量的散列部分。 这个想法是有点古怪,但我承担......

我想从以下网址提取“位置”片段并将其保存为一个PHP变量。

http://www.example.com/#location

然而,在这个讨论环节表示URL的片段只有通过JavaScript访问。

然而这是可能创造一个片段在URL复制链接,PHP解析,然后由国防部重写删除? 所以....

原始地址:

http://www.example.com/location/#location

PHP获得位置变量多亏了简单的“位置”中的URL

阿帕奇然后重写链接:

http://www.example.com/#location

我很好奇,想知道是否有解决这个问题的一种优雅的方式。

Answer 1:

你需要使用Javascript来阅读。 有几种不同的选择 - 在网页加载时,你可以使用一个XMLHttpRequest(AJAX请求)告诉什么额外的URL参数为服务器。 Alternatley你可以检查,看看是否有额外的参数(也可以通过JavaScript)的,如果你发现任何,回发到具有这些参数编码到URL本身不同的URL。



Answer 2:

这个片段从未发送到服务器,根据此线索对mod_rewrite的论坛。 所以,除非你使用AJAX的事实后更改的页面,这可能是不可能的。

另一个想法是有使用Javascript把散列成$ _GET paramater,然后刷新页面。



Answer 3:

你可以通过AJAX发送哈希代码到PHP脚本,做一个即时刷新(页面重新加载)



Answer 4:

一旦你通过AJAX发送值的服务器。 您可以在会话中设置的片段值。 当您刷新页面,你可以得到这是在会话和进程设置,则显示相应的内容片断。 因为我们无法通过PHP_SELF / QUERY_STRING等获得片段值我们需要这个来增加我们的网页,例如Gmail的速度。



Answer 5:

它包含在从返回的“片段”价值PHP的parse_url功能 。

从PHP手册:

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

将返回:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path


文章来源: PHP & Hash / Fragment Portion of URL