如何下载带有“的页面”;传输编码:分块;PHP5.2之前的版本
正在尝试从XML语言检索页面。然而,检索是不可靠的,因为它是分块传输编码。如何正确下载此页面以进行进一步编辑 我不能使用PHP流过滤器,因为我的PHP版本只有5.2。使用扩展名 或者对于简单的GET请求,只需使用内置包装器(例如,如何下载带有“的页面”;传输编码:分块;PHP5.2之前的版本,php,filter,stream,chunked,Php,Filter,Stream,Chunked,正在尝试从XML语言检索页面。然而,检索是不可靠的,因为它是分块传输编码。如何正确下载此页面以进行进一步编辑 我不能使用PHP流过滤器,因为我的PHP版本只有5.2。使用扩展名 或者对于简单的GET请求,只需使用内置包装器(例如,文件\u GET\u内容)用于下载文件 我建议使用。它支持HTTP/1.1,这是可靠地接收分块数据所必需的。PHP核心函数如file\u get\u contents等不支持HTTP/1.1 编辑 重新措辞以澄清。谢谢你,@troelskn 编辑 使用cURL的示例:
文件\u GET\u内容
)用于下载文件 我建议使用。它支持HTTP/1.1,这是可靠地接收分块数据所必需的。PHP核心函数如file\u get\u contents
等不支持HTTP/1.1
编辑
重新措辞以澄清。谢谢你,@troelskn
编辑
使用cURL的示例:
$rCURL = curl_init();
curl_setopt($rCURL, CURLOPT_URL, 'http://www.example.com/file_to_retrieve.xml');
curl_setopt($rCURL, CURLOPT_HEADER, 0);
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1);
$aData = curl_exec($rCURL);
curl_close($rCURL);
var_dump($aData);
您如何尝试检索该文件?“从xml语言检索页面”@zneak我将发布新消息。函数readfile_chunked($filename,$type='array'){$chunk_array=array();$chunksize=1*(1024*1024);$buffer='';$handle=fopen($filename,'rb');if($handle==false){return false;}while(!feof($handle)){switch($type){case'array':$lines[]=fgets($handle,$chunksize);break;case'string':$lines=fread($handle,$chunksize);break;}}fclose($handle);返回$line;}foreach(readfile_chunked(')作为$key=>$value){$res.=$value;}file_put_contents('file.xml',$res)@Tomalak Geret'kal是的,这是带有电视的xml文件。@trymerson2010:“带有电视的xml文件”?!?!?!关于http/1.1在
5.3
之前不受支持的说法,你有参考资料吗?@troelskn:argl,我应该更清楚这一点。我不是说HTTP/1.1在5.3.0之前不受支持,但是(请参阅Changelog)。您可能已经了解了一些情况。流包装器协议\u版本
(或上下文设置)可能配置错误。或者OPs服务器不完全兼容,即使php用户代理请求使用/1.0(chunked确实是1.1而不是1.0的要求),也会使用/1.1回复。知道如何使用cURL或任何其他方法获取此文件吗?@trymerson2010:更新了我的答案。comand如何使用cURL?因为连wget都在下载文件,我不建议使用curl命令行,而是使用php扩展;这就是为什么我添加了一个指向相应手册部分的链接