8

我正在尝试找到一种方法来保存 url 的哈希部分并作为 PHP 变量。这个想法有点古怪,但请耐心等待......

我想从以下 URL 中提取“位置”片段并将其保存为 PHP 变量。

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

但是,此链接上的讨论表明 URL 的片段只能通过 JavaScript 访问。

但是是否可以创建一个链接,其中片段在 URL 中重复,由 PHP 解析,然后由 mod rewrite 删除?所以....

原网址:

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

由于 URL 中的普通“位置”,PHP 获取位置变量

然后 Apache 将链接重写为:

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

我很想知道是否有一种优雅的方法来解决这个问题。

4

5 回答 5

9

您需要使用 Javascript 来阅读此内容。有几个不同的选项 - 在页面加载时,您可以使用 XmlHTTPRequest(AJAX 请求)告诉服务器附加的 URL 参数是什么。Alternatley 您可以检查是否有其他参数(也可以通过 Javascript),如果找到,请发回将这些参数编码到 URL 本身中的不同 URL。

于 2009-07-21T22:16:37.590 回答
5

根据Mod_Rewrite 论坛上的这个帖子,片段永远不会发送到服务器。因此,除非您事后使用 AJAX 更改页面,否则这可能是不可能的。

另一个想法是让 Javascript 将散列转换为 $_GET 参数,然后刷新页面。

于 2009-07-21T22:14:49.357 回答
0

一旦您通过 AJAX 将值发送到服务器。您可以在 SESSION 中设置片段值。刷新页面时,可以得到在session中设置的fragment并处理,然后显示相应的内容。因为我们无法通过 PHP_SELF / QUERY_STRING 等获取片段值。我们需要它来提高 Gmail 等网页的速度。

于 2010-08-08T13:00:46.553 回答
0

您可以通过 AJAX 将哈希片段发送到 PHP 脚本并立即刷新(重新加载页面)

于 2009-07-21T22:14:22.760 回答
-2

它包含在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
于 2011-10-26T05:43:03.283 回答