Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中获取html正文的某些部分_Php_Html_Curl - Fatal编程技术网

如何在php中获取html正文的某些部分

如何在php中获取html正文的某些部分,php,html,curl,Php,Html,Curl,我只想得到HTML正文的一些行,我正在使用带有c URL的PHP(例如前10行)。通过获取某些部分,我的意思是我不想下载整个文件并获取其中的某些部分 有没有办法只从服务器本身获取HTML文件的某些部分?通过在curl或PHP中进行一些设置。如果服务器支持,您可以发出范围请求 在HTTP请求头中添加: curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Range: 0-1500', )); …获取前1500字节,这可能是也可能不是前10行,

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


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

如果服务器支持,您可以发出范围请求

在HTTP请求头中添加:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Range: 0-1500',
    ));
…获取前1500字节,这可能是也可能不是前10行,取决于行的长度


问题在于(除了服务器可能缺乏支持外),您需要知道文档中需要哪些字节,然后必须从部分HTML而不是完整的HTML文档中提取数据。

您可以使用CURL从URL下载部分内容:

这里有一个函数:

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

有没有办法在收到x字节后计数和终止连接?只需将最大字节数设置为所需的数字,它将在收到您设置的最大字节数后断开连接:例如:
curl\u get\u content(“http://www.example.org/some-file.zip“,03000)
,在这种情况下,它在3000字节处停止。问题是某些服务器不支持范围。你给出的答案涉及范围!!!