парсинг PHP простой HTML DOM — цикл

Я начал играть в Simple HTML Doom Parser, и у меня возникли некоторые проблемы:

HTML-код выглядит следующим образом:

<div class="players">
<ul class="dane">
<li>
<div class="name">Messi</div>
<div class="value">Barcelona</div>
</li>
<li>
<div class="name">Ronaldo</div>
<div class="value">Madryt</div>
</li>
</ul>
</div>

<div class="clubs">
<ul class="dane">
<li>
<div class="name">Barcelona</div>
<div class="value">Hiszpania</div>
</li>
<li>
<div class="name">Madryt</div>
<div class="value">Hiszpania</div>
</li>
</ul>
</div>

<div class="trenerzy">
<ul class="dane">
<li>
<div class="name">Ernesto Valverde</div>
<div class="value">Barcelona</div>
</li>
<li>
<div class="name">Madryt</div>
<div class="value">Zidane</div>
</li>
</ul>
</div>

Мой код PHP:

include_once('simple_html_dom.php');
$html = file_get_html('http://');

$articles = array();
foreach($html->find('ul.dane') as $article) {
$item['name']     = $article->find('div.name',0)->plaintext;
$item['value']    = $article->find('div.value',0)->plaintext;
$articles[] = $item;
}

print_r($articles);

Данные, которые он получает:

Array
(
[0] => Array
(
[name] =>                   Messi
[value] =>                      Barcelona
)

[1] => Array
(
[name] =>                   Barcelona
[value] =>                      Hiszpania
)

[2] => Array
(
[name] =>                   Ernesto Valverde
[value] =>                      Barcelona
)

Он получает данные из класса данных ul.dane, но только 1 запись, как я могу сделать, чтобы получить все, что находится на странице?

Я знаю, что где-то пропущена петля, но у меня проблема с поиском

0

Решение

Вы, вероятно, хотите

  1. Найти все ul.dane элементы
  2. Внутри каждой улицы ищите li элементы
  3. Внутри каждого ли, искать div.name а также div.value элементы

В этом случае проблема с вашим кодом заключается в том, что вы забыли найти каждый li элемент внутри каждого ul, что будет шаг 2. Попробуйте это:

foreach($html->find('ul.dane') as $ul) {
foreach($ul->find('li') as $article){
$item['name']     = $article->find('div.name',0)->plaintext;
$item['value']    = $article->find('div.value',0)->plaintext;
$articles[] = $item;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]