【问题标题】:how to get some part of a html body in php如何在php中获取html正文的某些部分
【发布时间】:2014-01-15 09:32:15
【问题描述】:

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

有什么方法可以只从服务器本身获取部分 HTML 文件?通过在 curl 或 PHP 中进行一些设置。

【问题讨论】:

    标签: php html curl


    【解决方案1】:

    如果服务器支持,你可以提出范围请求。

    在您的 HTTP 请求标头中添加:

    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Range: 0-1500',
        ));
    

    …获取前 1500 个字节,可能是前十行,也可能不是前十行,具体取决于行的长度。

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

    【讨论】:

      【解决方案2】:

      您可以使用 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_get_content("http://www.example.org/some-file.zip",0,3000),在这种情况下它停在3000字节。
      • 问题是某些服务器不支持范围。你给出的答案涉及范围!!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多