如何在PHP中获取html主体的某些部分

时间:2014-01-15 09:32:15

标签: php html curl

我想只得到HTML主体的一些行,我使用带有c URL的PHP​​(例如前10行)。通过获取某些部分,我的意思是我不想下载整个文件并获取它的一些部分。

有没有办法只从服务器本身获取HTML文件的某些部分?通过在curl或PHP中进行一些设置。

2 个答案:

答案 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