使用PHP

时间:2015-10-27 17:42:56

标签: php zlib

我有一个路由器配置导出文件,其中包含20个字节的标头,后跟zlib压缩数据。一旦解压缩,它应该包含普通的xml内容。

我的代码剥离前20个字节,并解压缩文件。导出的数据仍然是二进制的。我首先使用了file_get_contents和file_put_contents,但假设(错误地)它不是二进制安全的。我试图将1-1中的20改为1-1000而无济于事。

<?
$fp_orig        = fopen('config.cfg', "rb");
$data_orig      = fread($fp_orig, filesize('config.cfg'));
fclose($fp_orig);

$bytes          = 20;  // tried 1-1000 
$data_gz        = substr($data_orig,$bytes);

$fp_gz          = fopen('config.cfg.gz', 'w');
fwrite($fp_gz, $data_gz);
fclose($fp_gz);

$fp_gz          = gzopen('config.cfg.gz', 'rb');
$fp_xml         = fopen('config.cfg.xml', 'wb'); 
while(!gzeof($fp_gz))
{
  fwrite($fp_xml, gzread($fp_gz, 4096));
}
fclose($fp_xml);
gzclose($fp_gz);

echo file_get_contents('config.cfg.xml'); // gives binary data
?>

我并不是特别想要交钥匙工作代码,而是朝着正确的方向努力。

0 个答案:

没有答案