使用file_get_html的PHP奇怪的问题

时间:2010-11-06 15:20:06

标签: php screen-scraping

您好我正在尝试将simple_html_dom用于文本(网站)群集项目,但我遇到了一个奇怪的问题。当我在外部循环中使用echo时,url和snippet是你所期望的,但是当我尝试回显数组内容时,我已经聚集在循环外部,网址是可以的但是片段已经消失,最后一个片段就在他们的位置

<?php
  // create HTML DOM
  include("simple_html_dom.php");
  $search_query = 'something';
  $j = 1;
  $k = 1;
  /*************************GOOGLE***************************/
  for ($i = 0; $i < 1; $i++) {
      $url = sprintf('http://www.google.com/search?q=%s&start=%d', $search_query, 10 * $i);
      $html = file_get_html($url);
      foreach ($html->find('a[class=l]') as $element) {
          $urls[$j] = $element->href;
          echo $element->href . "\n\n\n\n\n";
          $j++;
      }
      foreach ($html->find('div[class=s]') as $element) {
          $snippets[$k] = $element->innertext;
          echo $element->innertext . "\n\n\n\n\n";
          $k++;
      }
  }
  $j = 1;
  foreach ($snippets as $elemement) {
      echo $urls[$j] . "\n" . $element . "\n\n\n\n";
      $j++;
  }
?>

2 个答案:

答案 0 :(得分:0)

你犯了一个错字,$elemenent确实应该是$element

foreach ($snippets as $element) {
    echo $urls[$j] . "\n" . $element . "\n\n\n\n";
    $j++;
}

这是习惯于制作可读代码的一个原因。这不是因为其他人喜欢它,而是因为它使调试变得更容易。

答案 1 :(得分:0)

你确定你的代码中没有输入拼写错误吗?

foreach ($snippets as $elemement) {
      echo $urls[$j] . "\n" . $element . "\n\n\n\n";
      $j++;
  }

elementelemement不同;你的循环执行正常,但你的陈述可能没有。