0

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

$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);

不产生 wated 输出StackOverflow

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

4

1 回答 1

2

试试这个:

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

readfile不返回文件的内容但输出它们

于 2012-11-08T08:43:06.773 回答