У меня есть файл экспорта конфигурации маршрутизатора, который содержит заголовок из 20 байтов, за которым следуют сжатые данные zlib. После распаковки он должен содержать простой XML-контент.
Мой код удаляет первые 20 байтов и распаковывает файл. Экспортируемые данные все еще являются двоичными. Сначала я использовал file_get_contents и file_put_contents, но предположил (ошибочно), что это не безопасно для двоичного кода. Я пытался изменить 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
?>
Я не особенно ищу рабочий код под ключ, а скорее толчок в правильном направлении.
Задача ещё не решена.
Других решений пока нет …