Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php file_get_contents()返回未知字符串_Php_File Get Contents - Fatal编程技术网

Php file_get_contents()返回未知字符串

Php file_get_contents()返回未知字符串,php,file-get-contents,Php,File Get Contents,我正在执行以下代码: <?php $html = file_get_contents('http://actualidad.rt.com/actualidad'); var_dump($html); ?> 结果是非常奇怪的。很长时间以来,我一直在使用file\u get\u contents()。但我不知道这会是什么 有什么帮助吗?非常感谢您的阅读。该网站在技术上已被破坏。无论客户机是否表示可以处理,它都会将页面发送回gzip编码的页面。这适用于所有现代web浏览器,因为它们要

我正在执行以下代码:

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

结果是非常奇怪的。很长时间以来,我一直在使用
file\u get\u contents()
。但我不知道这会是什么


有什么帮助吗?非常感谢您的阅读。

该网站在技术上已被破坏。无论客户机是否表示可以处理,它都会将页面发送回gzip编码的页面。这适用于所有现代web浏览器,因为它们要么请求默认压缩的页面,要么处理gzip响应,即使它们没有请求

您可以按照Wouter指出的方法进行操作,但我建议使用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。这是因为我将
CURLOPT_编码
选项设置为“gzip”。因为我已经设置好了,curl知道响应将被gzip压缩,并将为您解压


我认为这是一个比手动解压页面更好的解决方案,因为在将来,如果站点是固定的,因此它会明智地返回一个非gzip页面。如果客户端说它无法处理gzip,那么这段代码应该继续工作。

这是gzip数据。我的猜测是,无论网站是否获得适当的接受编码头,网站都会发送压缩响应。您是否使用UTF-8?你应该是,因为这是一个国际页面。你希望从这个url得到什么?它是压缩文件还是编码文件?您的标题可能有问题。@JonathanM Web浏览器通常会自动解压缩gzip页面。事实上,许多/大多数网站会发送压缩页面以节省带宽,而浏览器会透明地解压缩页面。然而,只有在传输了适当的接受编码头的情况下,站点才应该发送压缩数据,这就是为什么文件内容应该工作的原因,因为它不应该发送头。我想说,这个网站的配置是错误的,但所有现代浏览器都会处理这个问题。@JonathanM网络服务器正在压缩数据。如果您查看标题,您将看到
内容编码:gzip
您是个天才:)非常感谢:)