包含哈希信息的file_get_contents

时间:2011-11-24 05:18:19

标签: php hash file-get-contents

我尝试了很多方法来尝试获取url的内容,哈希影响输出。我真的不确定如何解释它,但这是一个例子......

这样做的:

echo file_get_contents('test.com/whatever.php?t1=1&t2=2#this');

将返回与:

相同的结果
echo file_get_contents('test.com/whatever.php?t1=1&t2=2');

即使我在网络浏览器中导航到它,它也会有所作为。当然上面的网址并不是我正在使用的网址,但我希望你明白这一点。

我尝试过的事情:

CURL:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);

的file_get_contents:

file_get_contents($url);

的fread:

//don't know where I put the code.

这些都是我尝试过的东西,除了这里之外我真的不知道下一步该去哪里。我真的不确定这是否可能,但我希望它是。

感谢您的帮助,sh042067。

3 个答案:

答案 0 :(得分:2)

哈希不会发送到服务器。哈希部分通常只能由浏览器访问。你可能会看到某种形式的AJAX检索,所以你需要找出被调用的实际URL并使用它。你可以使用Firebug。

找到参考文献:http://en.wikipedia.org/wiki/Fragment_identifier

检查这些

Why the hash part of the URL is not in the server side?

Can I read the hash portion of the URL on my server-side application (PHP, Ruby, Python, etc.)?

答案 1 :(得分:0)

您的回复将是相同的,因为哈希是客户端的进程,而不是服务器端的进程

引自wikipedia

  

片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端,没有   从服务器参与 - 当然服务器通常有帮助   确定MIME类型,并确定MIME类型   处理碎片。当代理(例如Web浏览器)   从Web服务器请求资源,代理将URI发送到   服务器,但不发送片段。相反,代理等待   服务器发送资源,然后代理处理   资源根据文档类型和片段值。

答案 2 :(得分:0)

哈希部分(称为“片段”)永远不会发送到服务器。 HTTP协议中没有有效的方法可以做到这一点。该片段仅用于在页面中导航,但浏览器无论如何都会请求和接收相同的数据。

有些网站使用JavaScript管理片段,以发出异步请求以加载新数据并动态更改页面,这在某种程度上模糊了这条线。

在您的情况下,您必须在页面上找到具有id="this"的HTML元素,因为片段指向的位置和浏览器向下滚动的位置。或者,如果你得到一个看起来像查询变量的片段,你必须找到你想要请求的真实的非JavaScript URL。