Ian*_*Ian 51 php encoding gzip decoding
我正在通过curl检索一个gzip压缩网页,但是当我将检索到的内容输出到浏览器时,我只得到原始的gzip压缩数据.如何在PHP中解码数据?
我找到的一种方法是将内容写入tmp文件,然后......
$f = gzopen($filename,"r");
$content = gzread($filename,250000);
gzclose($f);
Run Code Online (Sandbox Code Playgroud)
....但是男人,必须有一个更好的方式.
编辑:这不是文件,而是由Web服务器返回的gzip压缩页面.
jon*_*asl 124
我用curl和:
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
Run Code Online (Sandbox Code Playgroud)
多功能 GUNZIP 功能:
函数gunzip($zipped) {
$偏移量=0;
if (substr($zipped,0,2) == "\x1f\x8b")
$偏移量= 2;
if (substr($zipped,$offset,1) == "\x08") {
# file_put_contents("tmp.gz", substr($zipped, $offset - 2));
返回 gzinflate(substr($zipped, $offset + 8));
}
返回“未知格式”;
}
将函数与 CURL 集成的示例:
$headers_enabled = 1;
curl_setopt($c, CURLOPT_HEADER, $headers_enabled)
$ret =curl_exec($c);
如果($headers_enabled){
# file_put_contents("preungzip.html", $ret);
$sections = 爆炸("\x0d\x0a\x0d\x0a", $ret, 2);
while (!strncmp($sections[1], 'HTTP/', 5)) {
$sections =explode("\x0d\x0a\x0d\x0a", $sections[1], 2);
}
$headers = $sections[0];
$数据=$节[1];
if (preg_match('/^内容编码: gzip/mi', $headers)) {
printf("找到 gzip 标头\n");
返回gunzip($数据);
}
}
返回$ret;
| 归档时间: |
|
| 查看次数: |
40858 次 |
| 最近记录: |