我想只得到HTML主体的一些行,我使用带有c URL的PHP(例如前10行)。通过获取某些部分,我的意思是我不想下载整个文件并获取它的一些部分。
有没有办法只从服务器本身获取HTML文件的某些部分?通过在curl或PHP中进行一些设置。
答案 0 :(得分:2)
如果服务器支持,您可以发出范围请求。
添加到您的HTTP请求标题:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Range: 0-1500',
));
...获取前1500个字节,可能是也可能不是前十行,具体取决于行的长度。
此问题(除了服务器可能缺乏支持之外)是您需要知道文档中的哪些字节,然后您必须从部分HTML而不是完整的HTML文档中提取数据。
答案 1 :(得分:0)
您可以使用CURL从网址下载部分内容:
这是一个功能:
function curl_get_content($url,$range_start,$range_end)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ("Range: bytes=$range_start-$range_end"));
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
curl_get_content("http://www.example.org/some-file.zip",0,5000)
返回前5000个字节。
注意:
确定远程服务器是否支持HTTP 206
curl -I http://s0.cyberciti.org/images/misc/static/2012/11/ifdata-welcome-0.png
示例输出:
HTTP/1.0 200 OK
Content-Type: image/png
Content-Length: 36907
Connection: keep-alive
Server: nginx
Date: Wed, 07 Nov 2012 00:44:47 GMT
X-Whom: l3-com-cyber
Cache-Control: public, max-age=432000000
Expires: Fri, 17 Jul 2026 00:44:46 GMT
Accept-Ranges: bytes // It accepts !
ETag: "278099835"
Last-Modified: Mon, 05 Nov 2012 23:06:34 GMT
Age: 298127