我需要从远程服务器检索GZ压缩的XML文件,并通过simplexml_load_string
解析它。有没有办法做到这一点,没有uncompressing the GZ to a file,然后通过simplexml_load_file
读取该文件?我想跳过对我来说似乎不必要的一步。PHP:如何将GZ解压缩为字符串?
1
A
回答
2
您应该可以使用Zlib库中的gzdecode
函数来执行此操作。
$uncompressedXML = gzdecode(file_get_contents($url));
更多关于gzdecode() from the PHP Docs。
但是,还有一种更简单的方法,它是通过使用compression wrapper。
$uncompressedXML= file_get_contents("compress.zlib://{$url}");
甚至更好:
$xmlObject=simplexml_load_file("compress.zlib://{$url}");
不要忘了安装和您的开发/生产服务器上启用的Zlib。
0
您可以使用gzuncompress()
解压缩字符串,但是使用gzuncompress会有一些缺陷,如字符串长度的限制和校验和的一些问题。
您可以使用此简写代码实现您期望的结果,但我建议根据数据(您正在接收的)如何压缩来检查额外的资源。
<?php
$compressed = gzcompress('<?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Dont forget me this weekend!</body></note>', 9);
$uncompressed = gzuncompress($compressed);
$xml = simplexml_load_string($uncompressed);
var_dump($xml);
http://php.net/manual/en/function.gzcompress.php
http://php.net/manual/en/function.gzdecode.php
0
或者干脆:
$sitemap = 'http://example.com/sitemaps/sitemap.xml.gz';
$xml = new SimpleXMLElement("compress.zlib://$sitemap", NULL, TRUE);
相关问题
- 1. JavaScript字符串压缩+ PHP解压缩
- 2. PHP解压缩字符串
- 3. 如何压缩/解压缩长字符串从PHP到Android?
- 4. 将NSArrays解压缩为字符串swift
- 5. 如何使用Excel/VBA将字符串压缩/解压缩为32个字符的字母数字字符串?
- 6. 压缩和解压字符串减缩
- 7. 解压缩压缩字符串
- 8. 如何用Python解压缩7-Zip.gz(.gz)?
- 9. 关于PHP和GZ-压缩
- 10. 压缩字符串,然后解压缩字符串?
- 11. 解压缩.gz文件作为目录
- 12. 如何在压缩/解压缩字符串后获取短字符串?
- 13. JavaScript字符串压缩和PHP/Ruby解压缩
- 14. Android:使用PHP压缩的解压缩字符串gzcompress()
- 15. PHP压缩字符串
- 16. 如何在脚本中压缩/解压缩字符串?
- 17. 如何在winrt中解压缩由SharpZipLib压缩的字符串?
- 18. 在PHP中,解压缩的gz字符串中的每个字符后跟^ @,为什么?
- 19. 如何压缩字符串?
- 20. GZIP串压缩不解压“£”字符
- 21. 如何使用PHP解压缩.gz文件?
- 22. Ruby - 如何将二进制字符串解压缩到普通字符串?
- 23. 如何解压JavaScript中的字符串,用C#压缩?
- 24. 压缩字符串
- 25. 使用C解压缩.gz文件#
- 26. 在C中解压缩.gz流#
- 27. 使用R解压缩gz文件
- 28. Ruby中的Zlib解压缩.gz
- 29. 使用GZipStream解压缩.gz文件
- 30. 批量解压缩.gz文件