Home  >  Article  >  Backend Development  >  php读取远程gzip压缩网页的方法_php技巧

php读取远程gzip压缩网页的方法_php技巧

WBOY
WBOYOriginal
2016-05-16 20:27:05865browse

今天在调取一家商城的页面信息时候,使用file_get_contents抑或curl:


复制代码 代码如下:

$url = 'http://www.xxx.com/21/?type=23′; 
$temp = file_get_contents($url); 
echo $temp;


都得到一片乱码,查看了许多内容,包括页面的header信息,发现原来页面使用了。

 

 

类似的信息,即Content-Encoding为gzip,即该站点开启了gzip压缩。这里的解决方案有多种,当然如果你使用file_get_contents的话,可以这样修改:

 

复制代码 代码如下:

file_get_contents("compress.zlib://".$url);

或者使用curl来完成:


复制代码 代码如下:

function curl_get($url, $gzip=false){  
        $curl = curl_init($url);  
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);  
        if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里  
        $content = curl_exec($curl);  
        curl_close($curl);  
        return $content;  

同时,参考手册上面的解法,还可以对保存gzip类型的字符串进行处理如下:

复制代码 代码如下:

function gzdecode($data){  
    $g=tempnam(‘/tmp','ff');  
    @file_put_contents($g,$data);  
    ob_start();  
    readgzfile($g);  
    $d=ob_get_clean();  
    return $d;  
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn