找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 528|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:50:53 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

            今天在调取一家商城的页面信息时候,使用file_get_contents抑或curl:
[U]复制代码[/U] 代码如下:
$url = 'http://www.xxx.com/21/?type=23′;  
$temp = file_get_contents($url);  
echo $temp;
都得到一片乱码,查看了许多内容,包括页面的header信息,发现原来页面使用了。



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

[U]复制代码[/U] 代码如下:
file_get_contents("compress.zlib://".$url);
或者使用curl来完成:
[U]复制代码[/U] 代码如下:
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类型的字符串进行处理如下:
[U]复制代码[/U] 代码如下:
function gzdecode($data){   
    $g=tempnam(‘/tmp','ff');   
    @file_put_contents($g,$data);   
    ob_start();   
    readgzfile($g);   
    $d=ob_get_clean();   
    return $d;   
}
            
            
您可能感兴趣的文章:
  • php中ob(Output Buffer 输出缓冲)函数使用方法
  • 用PHP ob_start()控制浏览器cache、生成html实现代码
  • php ob_flush,flush在ie中缓冲无效的解决方法
  • 用php的ob_start来生成静态页面的方法分析
  • PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
  • 使用php判断网页是否gzip压缩
  • php缓冲 output_buffering和ob_start使用介绍
  • PHP使用ob_start生成html页面的方法
  • php使用ob_start()实现图片存入变量的方法
  • php中ob_get_length缓冲与获取缓冲长度实例
  • php中ob函数缓冲机制深入理解
  • php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端