Heim > Backend-Entwicklung > PHP-Tutorial > PHP中GZIP解压 自定义gzdecode函数的使用

PHP中GZIP解压 自定义gzdecode函数的使用

WBOY
Freigeben: 2016-06-20 13:01:18
Original
3991 Leute haben es durchsucht

在做一个微博项目中,发布视频需要解析外链获取视频地址信息,

用的是PHP的curl 获取内容,正则解析。

 后来测试发现土豆的视频无法解析,其他的都好。

经过反复测试,发现是土豆用了GZIP压缩,于是用gzdecode反解压。

发现本地的wamp 2.1 zlib 库, 网上cn.php.net 搜了解决办法,自定义个函数用gzinflate实现。

下面是代码

if (!function_exists('gzdecode')) {
    function gzdecode ($data) {
        $flags = ord(substr($data, 3, 1));
        $headerlen = 10;
        $extralen = 0;
        $filenamelen = 0;
        if ($flags & 4) {
            $extralen = unpack('v' ,substr($data, 10, 2));
            $extralen = $extralen[1];
            $headerlen += 2 + $extralen;
        }
        if ($flags & 8) // Filename
            $headerlen = strpos($data, chr(0), $headerlen) + 1;
        if ($flags & 16) // Comment
            $headerlen = strpos($data, chr(0), $headerlen) + 1;
        if ($flags & 2) // CRC at end of file
            $headerlen += 2;
        $unpacked = @gzinflate(substr($data, $headerlen));
        if ($unpacked === FALSE)
            $unpacked = $data;
        return $unpacked;
    }
}
Nach dem Login kopieren

希望对大家有用!


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage