有人可以解释为什么这段代码:
$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 -
与该行一样被注释掉了。任何见解都表示赞赏。
答案 0 :(得分:2)
试试这个:
$strCompressed = file_get_contents($file);
echo gzuncompress($strCompressed);
readfile
不会返回文件的内容,而是输出它们