2015-09-25 15 views
7

Ho un carico di file SWF compresso con LZMA che vorrei decomprimere e leggere in modo programmatico con PHP sul mio server. Qualcuno può indirizzarmi a un SDK LZMA PHP? Ho cercato su Google, ma finora ho trovato solo riferimenti a un collegamento interrotto (7z extension for php?)Decompressione di LZMA con PHP

Ho un modulo Python funzionante che riesce a leggere le intestazioni dei file SWF compressi LZMA ma richiede un modulo chiamato pyLZMA che non Sembra che voglia installare sul mio server, e farlo funzionare a livello locale è stato un enorme rompicapo quindi preferirei una soluzione PHP se ne esiste una.

+1

Se non esiste una classe/libreria/estensione LZMA per PHP, è sempre possibile chiamare l'applicazione '7z' della riga di comando. –

+0

Come esattamente decodificare una stringa ~ 8MB tramite la riga di comando? – hedgehog90

+0

È possibile salvarlo come file temporaneo o '7z' può accettare dati da STDIN. –

risposta

2

C'è una libreria denominata PHP-SevenZipArchive che è un wrapper per i binari 7za e 7zr. Semplice scenario di test a lavorare per me in Linux:

installare p7zip pacchetto (yum install p7zip o simile)

creare test file compresso nella shell Linux

echo "Compressed data" | lzma -z > compressed.string 

scaricare e decomprimere PHP-SevenZipArchive

wget https://github.com/cmanley/PHP-SevenZipArchive/archive/master.zip 
unzip master.zip 

creare la directory per l'output decompresso

mkdir out 

creare test file php

<?php 
require "./PHP-SevenZipArchive-master/SevenZipArchive.php"; 
$archive = new SevenZipArchive('compressed.string', array('binary'=>'/usr/bin/7za')); 
$archive->extractTo('out'); 
?> 

php -f ./index.php creerà file di fuori/compresso

cat out/compressed 

dati compressi

NOTA: La mia risposta precedente è stato cancellato dai moderatori per la sua scarsa qualità, anche se ho già avuto una reputazione positiva per questo. Quindi l'ho riscritto completamente in modo dettagliato. Spero che questo aiuti ancora di più.