我尝试了很多方法来尝试获取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。
答案 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)
您的回复将是相同的,因为哈希是客户端的进程,而不是服务器端的进程
片段标识符的功能与URI的其余部分不同:即,它的处理完全是客户端,没有 从服务器参与 - 当然服务器通常有帮助 确定MIME类型,并确定MIME类型 处理碎片。当代理(例如Web浏览器) 从Web服务器请求资源,代理将URI发送到 服务器,但不发送片段。相反,代理等待 服务器发送资源,然后代理处理 资源根据文档类型和片段值。
答案 2 :(得分:0)
哈希部分(称为“片段”)永远不会发送到服务器。 HTTP协议中没有有效的方法可以做到这一点。该片段仅用于在页面中导航,但浏览器无论如何都会请求和接收相同的数据。
有些网站使用JavaScript管理片段,以发出异步请求以加载新数据并动态更改页面,这在某种程度上模糊了这条线。
在您的情况下,您必须在页面上找到具有id="this"
的HTML元素,因为片段指向的位置和浏览器向下滚动的位置。或者,如果你得到一个看起来像查询变量的片段,你必须找到你想要请求的真实的非JavaScript URL。