【问题标题】:How to extract only certain data with file_get_contents如何使用 file_get_contents 仅提取某些数据
【发布时间】:2011-11-26 01:19:07
【问题描述】:

如何使用file_get_contents() 提取$homepage 变量的某一部分?

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?> 

【问题讨论】:

标签: php web web-scraping file-get-contents


【解决方案1】:

你的问题问得不是很多,但是在抽象层面上,我相信你正在寻找字符串操作课程:) 这里是我分享的几个链接,

顺便说一句,这完全取决于您要提取的内容,如果您可以详细说明详细问题,这将有助于我们及时回答您!

干杯

PS:屏幕抓取是一个坏主意,除非您正在抓取自己的网页(这确实有意义:))。原因是您永远不知道 WWW.EXAMPLE.COM 何时会发生变化,而您的操作逻辑将不再有用

【讨论】:

    【解决方案2】:

    最好的解决方案可能是在加载$homepage 变量后对其进行处理。看看String functionsregular expressions

    file_get_contents() 支持offsetmaxlen 选项,这些选项可用于控制文件的哪些部分被加载,但offset 的行为被文档描述为在用于非本地文件时“不可预测”就像你的例子一样。

    也就是说,maxlen 可能是安全的,因此如果您知道您想要的内容将出现在文件的前 N ​​位中,您可以使用它来修剪结尾。因此,如果您确定只需要主页的前 100 个字节,则可以执行file_get_contents ( 'http://www.example.com/', false, NULL, 0, 100) 之类的操作。但除非您想要前 100 个字节,否则您仍然需要进行一些后期处理。

    请参阅http://php.net/manual/en/function.file-get-contents.php 了解更多信息。 (maxlen 除外,这些都是默认值。)

    【讨论】:

      【解决方案3】:

      这里是正则表达式和 PHP 的示例。

      <?php
      $f = file_get_contents ("http://www.example.com");
      $f = preg_replace ("(\&nbsp;|\r|\n|\t)", "", $f); // optional
      $f = preg_replace ("/\s\s+/", " ", $f); // optional spaces
      
      if (preg_match ("/<h1>(.*)<\/h1>/", $f, $res)) {
          $data = $res [1];
      }
      
      echo $data;
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-17
        • 1970-01-01
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 2013-04-26
        • 1970-01-01
        相关资源
        最近更新 更多