file_get_contents()返回未知字符串

时间:2014-12-09 19:44:04

标签: php file-get-contents

我正在执行以下代码:

<?php
$html = file_get_contents('http://actualidad.rt.com/actualidad');
var_dump($html);
?>

结果不仅仅是奇怪的。我和file_get_contents()合作了很长时间。但我不知道这是什么。

有任何帮助吗?非常感谢,阅读。

1 个答案:

答案 0 :(得分:4)

该网站在技术上受损。无论客户端是否表明它可以应对,它都会将页面发送回gzip编码。这适用于所有现代Web浏览器,因为它们要么默认压缩页面,要么即使他们没有要求也应对gzip压缩响应。

您可以沿着Wouter指出的the answer to the question中建议的路线走下去,但我建议使用PHP的curl库。这应该能够透明地解码所请求的页面。

例如:

$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://actualidad.rt.com/actualidad');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_ENCODING , 'gzip');
echo curl_exec ($ch);

您应该会发现这会输出网页的实际HTML。这是因为我设置为“gzip”的CURLOPT_ENCODING选项。因为我已经设置了,curl知道响应将被gzip压缩,并将为你解压缩。

我认为这是一个比手动解压缩页面更好的解决方案,如将来一样,如果网站已修复,以便 明智地返回非gzip压缩页面,如果客户端说它无法应付gzip,这段代码应该继续工作。