Gz(un)在PHP中压缩并保存到文件

时间:2012-11-08 08:39:02

标签: php compression

有人可以解释为什么这段代码:

$str = "StackOverflow"; 
echo $str . " - ";

$strCompressed = gzcompress($str);
//echo $strCompressed . " - ";

$strUncompressed = gzuncompress($strCompressed);
echo $strUncompressed . " - ";

给出预期的输出:StackOverflow - StackOverflow -

但是这段代码(从文件写入和读取):

$str = "StackOverflow";
$strCompressed = gzcompress($str);

$file = "test.cache";
$fp = fopen($file, "w");
fwrite($fp, $strCompressed);
fclose($fp);

$strCompressed = readfile($file);
echo gzuncompress($strCompressed);

不会产生StackOverflow的输出?

另外,我想知道,如果我在第一个示例(//echo $strCompressed . " - ";)中解开注释的代码行,脚本将输出如下内容:StackOverflow - xś.ILÎö/K-JËÉ/,因此您可以看到没有第二个StackOverflow -与该行一样被注释掉了。任何见解都表示赞赏。

1 个答案:

答案 0 :(得分:2)

试试这个:

$strCompressed = file_get_contents($file);
echo gzuncompress($strCompressed);

readfile不会返回文件的内容,而是输出它们