Парсинг HTML

Рейтинг: 0Ответов: 1Опубликовано: 23.10.2014

Есть html вида:

<div>
    <h2><a href="...">text1</a></h2>
    <div>
        <p>text2</p>
        <p>
            <i>text3</i>
            <i>text4</i>
        </p>
    </div>

<div>

Код phpQuery:

// выше заселектили самый первый div
foreach (pq($dom)->find('*') as $d) {
    PR(pq($d)->html());
}

На выходе:

<a href="...">text1</a>
---
text1
---
<p>text2</p>
<p>
    <i>text3</i>
    <i>text4</i>
</p>
---
text2
<i>text3</i>
<i>text4</i>
---
text3
text4

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

<a href="...">text1</a>
---
<p>text2</p>
<p>
    <i>text3</i>
    <i>text4</i>
</p>

Т.е. чтобы он не выдавал мне всё в рекурсии, а проходился только по первым тегам в диве.

Ответы

▲ 2Принят

Как в jQuery:

так:

pq($dom)->children()

или так:

pq($dom)->find('> *')