我试图找到一种方法来保存网址的哈希部分和PHP变量。这个想法有点怪异,但请耐心等待......
我想从以下URL中提取“location”片段并将其另存为PHP变量。
http://www.example.com/#location
但是,此link的讨论表明,URL的片段只能通过JavaScript访问。
但是可以创建一个链接,其中片段在URL中重复,由PHP解析,然后通过mod重写删除?所以....
原始网址:
http://www.example.com/location/#location
由于URL中的简单“位置”,PHP获取位置变量
Apache然后将链接重写为:
http://www.example.com/#location
我很想知道是否有一种优雅的方法来解决这个问题。
答案 0 :(得分:9)
您需要使用Javascript来阅读此内容。有几个不同的选项 - 在页面加载时,您可以使用XmlHTTPRequest(AJAX请求)告诉服务器其他URL参数是什么。您可以检查Alternatley是否有其他参数(也可以通过Javascript),如果您找到任何参数,请回发到不同的URL,这些参数将这些参数编码到URL本身。
答案 1 :(得分:5)
根据Mod_Rewrite论坛上的thread,片段永远不会发送到服务器。因此,除非您在事后使用AJAX更改页面,否则这可能是不可能的。
另一个想法是让Javascript将哈希转换为$ _GET参数,然后刷新页面。
答案 2 :(得分:0)
你可以通过AJAX将散列片段发送到PHP脚本并立即刷新(重新加载页面)
答案 3 :(得分:0)
通过AJAX将值发送到服务器后。您可以在SESSION中设置片段值。刷新页面时,可以获取在会话和进程中设置的片段,然后显示相应的内容。因为我们无法通过PHP_SELF / QUERY_STRING等获取片段值。我们需要这样来提高我们的网页速度,如Gmail。
答案 4 :(得分:-2)
它包含在PHP's parse_url function返回的“片段”值中。
从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