6

SO中的某人告诉我,可以通过php函数parse_url检索url中的哈希(#)?这是真的?

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

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

我曾尝试使用 javascript 将哈希值保存在 cookie 中,但这不适用于 firefox,而且在 safari 中速度太慢(html 将首先显示,因此必须再次刷新页面才能显示正确的内容)。

欢迎任何其他解决方案

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

4

5 回答 5

11

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

于 2009-12-24T06:32:51.703 回答
6

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

请注意键“片段”下的条目。

于 2009-12-24T06:33:28.913 回答
0

SO中的某人告诉我,可以通过php函数parse_url检索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 是否包含这个哈希值(不考虑)。

于 2009-12-24T06:34:20.363 回答
0

来自php 手册的示例:

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

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?> 
于 2009-12-24T06:35:06.947 回答
0

使用 javascript 获取 #value 后,使用 ajax 或 .... 将其发送回服务器。 url:http ://example.in/?paramvalue=PKDVS4G#access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8

<script>     
alert(window.location.hash);
var myhashvalue = window.location.hash;
//hash value like :  #access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8
//ajax call to send myhashvalue to server
</script>   
于 2017-05-06T06:10:07.500 回答