我正在努力阅读php中的gzip压缩文件。
我使用XMLReader()成功读取了普通的xml文件:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
但是,当xml文件被gzip压缩时,这不起作用。如何解压缩文件并使用XMLReader读取它?
答案 0 :(得分:21)
由于您没有指定PHP版本,我将假设您使用的是PHP5。
我想知道为什么人们没有建议使用内置的PHP compression streams API。
$linkToXmlFile = "compress.zlib:///path/to/xml/file.gz";
$xml = new XMLReader();
$xml->open($linkToXmlFile);
根据我的理解,在封面下,它将透明地为您解压缩文件,并允许您读取它,就好像是一个普通的xml文件。现在,这可能是轻描淡写。
答案 1 :(得分:4)
也许函数gzdecode
可以帮到你:手册说(引用):
解码gzip压缩字符串
所以,你必须:
gzdecode
XMLReader
这取决于您服务器上安装的正确扩展名(zlib
我猜),但是...
Mark:扩展Pascal的帖子,这里有一些适合你的示例代码
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);
答案 2 :(得分:2)
扩展Pascal的帖子,这里有一些适合你的示例代码
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);