我有一个路由器配置导出文件,其中包含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
?>
我并不是特别想要交钥匙工作代码,而是朝着正确的方向努力。