我尝试了一些方法来使用 PHP Simple HTML DOM Parser 启用 gzip 压缩,但到目前为止似乎没有任何效果。使用 ini_set 我设法更改了用户代理,所以我认为还可以启用 gzip 压缩?

include("simpdom/simple_html_dom.php");
ini_set('zlib.output_compression', 'On');
$url = 'http://www.whatsmyip.org/http_compression/';
$html = file_get_html($url);
print $html;

上面的网站对其进行了测试。如果我完全以错误的方式解决这个问题,请告诉我。

====

更新

对于试图实现相同目标的任何其他人,最好只使用 cURL,然后像这样使用 dom 解析器:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); // Define target site
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return page in string
curl_setopt($cr, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.3 Safari/533.2');
curl_setopt($ch, CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects

$return = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

$html = str_get_html("$return");

最佳答案

CURLOPT_ENCODING 使响应返回(接受为)gzipped 数据 - 服务器设置(ob_start("ob_gzhandler") 或 php_ini ..)告诉服务器输出 gzipped 数据。

就像您使用不支持 gzip 的浏览器访问该页面一样。要接受 gzip 数据,您必须使用 curl 来进行区分。

10-08 00:39
查看更多