用php检索网址中的哈希值?

时间:2009-12-24 06:31:55

标签: php javascript fragment-identifier

这里有人告诉我,url中的哈希值(#)可以通过php函数parse_url检索到吗?这是真的吗?

我的网站获得了很多ajax效果,我希望能够将带有哈希的url传递给index.php,以便它可以根据哈希值显示信息。

例如。如果用户在我的网站上点击并导航并找到了他想要分享的内容,那么他​​可以复制该地址并将其发送给他的朋友,当这个人进入时,他会看到同样的事情。

我已经尝试使用javascript来保存cookie中的哈希值但是这不适用于firefox并且它在safari中太慢了(html将首先显示,所以必须第二次刷新页面才能获得正确的内容示出)。

欢迎任何其他解决方案

编辑:我非常困惑..如果我使用parse_url我必须在php中键入url来获取哈希?那么有什么意义......我的问题是我的朋友是否可以使用#值输入网址并且php可以处理它?这似乎是不,我是对的吗?

4 个答案:

答案 0 :(得分:11)

URL中的哈希甚至获取到服务器。您无法从服务器端的任何编程语言访问它。

答案 1 :(得分:5)

parse_url()可以从url字符串中获取哈希值。请注意签名:

mixed parse_url ( string $url [, int $component = -1 ] )

您必须已经知道该字符串。例如,来自文档:

<?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

请注意“fragment”键下的条目。

答案 2 :(得分:0)

  有人在这里告诉我那个   可以检索url中的hash(#)   通过php函数parse_url?这是   真?

是:

parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040

但是如果不知道完整的URL先验,就不能确定服务器端的哈希值,不确定HTTP_REFERER是否保留了这个哈希值(不这么认为)。

答案 3 :(得分:0)

来自php manual的示例:

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

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>