Вопрос по PHP Simple HTML DOM

A
На сайте с 09.01.2013
Offline
33
898

Подскажите, спарсил

$html->find('div.b-catalogmain')

в этом div'e есть теги h1.cm__h1 (43 штуки), а в этих тегах h1 есть ul.b-catalogitems li и общее количество на всю страницу 344 штуку. Т.е. в теге h1 тегов ul может быть 5 или 10 или 2.

Так во вопрос как посчитать, сколько тегов ul.b-catalogitems li в каждом h1.

Пока что добился общего количество только так:

foreach($html->find('div.b-catalogmain') as $article) {

echo "Количество родительских - ".count($article->find('h1.cm__h1'))."<br>";

echo "Количество под_уровень 1 - ".count($article->find('ul.b-catalogitems li'))."<br>";

}

Ну и соответственно могу получить данные каждого уровня изменяя число вложений:

$article->find('h1.cm__h1', 0)->plaintext;

$article->find('ul.b-catalogitems li', 0)->plaintext;

Но т.к. мне надо привязывать к родителю, мне нужно знать количество, чтобы потом for'ом прогнать и привязать только те, которые подходят к конкретному родителю.

Господа, может быть это и по другому можно сделать?

C
На сайте с 04.02.2005
Offline
291
#1

Покажите html код

Я понял вот такой

<div.b-catalogmain>

<h1.cm__h1>
<ul.b-catalogitems>
<li></li>
</ul>

</h1>
<h1.cm__h1>
</h1>
<h1.cm__h1>
</h1>

</div>

Вот здесь делаем вроде как правильно

foreach($html->find('div.b-catalogmain') as $article) {

т.е. в $article блок div.b-catalogmain

Но а это что?

count($article->find('h1.cm__h1'))

ведь можно

$first_level = ($article->find('h1.cm__h1')

count($first_level)

а теперь сделать счетчик и по второму уровню для li

foreach($first_level') as $f_l) {

$second_level = $f_l->find('ul.b-catalogitems li')
и т.д.

Потому что

Но т.к. мне надо привязывать к родителю, мне нужно знать количество, чтобы потом for'ом прогнать и привязать только те, которые подходят к конкретному родителю.
A
На сайте с 09.01.2013
Offline
33
#2
Chukcha:
Покажите html код


<div class="b-catalogmain">
<h1 class="cm__h1">Телефоны<sup>8654</sup></h1>

<ul class="b-catalogitems">
<li>
<div class="i">
<a href="/mobile/"><img class="ic" src="/pic/ico-mcat1blue.gif"/></a>
<a href="/mobile/">Мобильные телефоны</a>
<sup> <a href="/mobile/~sort_by=price/">от 20 у.е.</a></sup>
</div></li>
</ul>


<ul class="b-catalogitems">
<li>
<div class="i">
<a href="/mobile/"><img class="ic" src="/pic/ico-mcat1blue.gif"/></a>
<a href="/mobile/">Мобильные телефоны</a>
<sup> <a href="/mobile/~sort_by=price/">от 20 у.е.</a></sup>
</div></li>
</ul>


<h1 class="cm__h1">Телефоны<sup>8654</sup></h1>

<ul class="b-catalogitems">
<li>
<div class="i">
<a href="/mobile/"><img class="ic" src="/pic/ico-mcat1blue.gif"/></a>
<a href="/mobile/">Мобильные телефоны</a>
<sup> <a href="/mobile/~sort_by=price/">от 20 у.е.</a></sup>
</div></li>
</ul>


<ul class="b-catalogitems">
<li>
<div class="i">
<a href="/mobile/"><img class="ic" src="/pic/ico-mcat1blue.gif"/></a>
<a href="/mobile/">Мобильные телефоны</a>
<sup> <a href="/mobile/~sort_by=price/">от 20 у.е.</a></sup>
</div></li>
</ul>

</div>
C
На сайте с 04.02.2005
Offline
291
#3

Как вариант

почить список h1

затем через nextsibling получить ul, а там и все li

A
На сайте с 09.01.2013
Offline
33
#4

Это немного понятно, а как к первому h1 привязать li, что идут за ним, и т.д.?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий