PHP странная проблема с file_get_html - PullRequest
0 голосов
/ 06 ноября 2010

Привет! Я пытаюсь использовать simple_html_dom для проекта кластеризации текста (веб-сайта), но столкнулся со странной проблемой.Когда я использую echo во внешнем цикле, то URL и фрагмент - это то, что вы ожидаете, но когда я пытаюсь отобразить содержимое массива, которое я собрал за пределами цикла, URL-адреса в порядке, но фрагменты пропали, и последний фрагмент на своем месте.

<?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 голосов
/ 06 ноября 2010

Вы уверены, что не сделали опечатку в своем коде?

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

element и elemement различны; Ваш цикл выполняется нормально, но ваше утверждение, вероятно, не выполняется.

0 голосов
/ 06 ноября 2010

Вы сделали опечатку, $elemenent действительно должно быть $element.

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

Это одна из причин, чтобы привыкнуть делать читаемый код. Это не потому, что это нравится другим, а потому, что это значительно облегчает отладку.

...