0

gzipされたファイルをデコードするためのこの機能がありますが、

// GZIP DECODE
function gzipDecode($d) {
    $f = ord(substr($d, 3, 1));
    $h = 10;
    $e = 0;
    if($f&4) {
        $e = unpack('v', substr($d, 10, 2));
        $e = $e[1];
        $h += 2 + $e;
    }
    if($f&8) {
        $h = @strpos($d, chr(0), $h) + 1;
    }
    if($f&16) {
        $h = strpos($d, chr(0), $h) + 1;
    }
    if($f&2) {
        $h += 2;
    }
    $u = @gzinflate(substr($d, $h));
    if($u == false) {
        $u = $d;
    }
    return $u;
}

期待どおりに動作しますが、エラー報告をオンにすると、これら 2 つのエラーが発生します

警告: strpos(): オフセットが文字列に含まれていません

警告: gzinflate(): データ エラー

これらの警告は、エラーが抑制された上記のコードの一部を参照しています。修正方法について何か考えがありますか?

ありがとう

4

1 に答える 1

1

単純に使ってみましたgzdecode()か?

ヘッダーのデコードは正しいようです。最初の 3 バイトで 0x1f、0x8b、8 をチェックして、gzip ストリームが実際に開始していると思われる場所から開始されていることを確認する必要があります。

于 2012-05-21T19:59:02.960 に答える