9

つまり、文字列を安全に gzinflate できるかどうかのテストです。

圧縮データが改ざんされている場合、「不良データ」という警告が表示されます。警告を抑制したくありません。つまり、警告をトラップするか、gzinflated できることをテストする必要があります。後者は私の好みの解決策ですが、方法がわかりません。

以下のコードサンプルに適合するものは完璧です:

if(i_can_haz_inflate($data))
{
    // go ahead
    $source = gzinflate($data);
}
else
{
    // bad data
}

編集: gz(de|in)flate を指定したので、実際には圧縮アルゴリズムについてあまり気にしていないことに気づきました。解凍を試みる前に整合性をチェックするのにより適したものはありますか?

4

2 に答える 2

6

gzinflate()gzdeflate()エンコードされた文字列でない場合は、元の文字列を返します。

最も明白なチェックは次のとおりです。

$deflated = @gzinflate($data); // to avoid getting a warning
if ($data != $deflated && $deflated !== FALSE) {
     $source  = gzinflate($data);
}

これを行う別の方法はないと思います。

于 2013-01-17T11:53:53.590 に答える