jquery — PHP простой HTML DOM Parser: получить только родитель

Я использую «PHP Simple HTML DOM Parser» для этого HTML:

<ul id="menu-test-header" class="nav-menu">
<li>
<a href="">Test</a>
<ul class="sub-menu">
<li>
<a href="">sub test</a>
<a href="">sub test</a>
<a href="">sub test</a>
</li>
</ul>
</li>
<li>
<a href="">Test</a>
</li>
<li>
<a href="">Test</a>
<ul class="sub-menu">
<li>
<a href="">sub test</a>
</li>
</ul>
</li>
</ul>

Я хочу получить в конце результата только родитель «Ли а» без части «подменю».
Это значит, что конечный результат должен быть только «Test», а не «sub test».
Каким должен быть селектор?

Код PHP:

foreach($html->find(".header-main .nav-menu li > a") as $menu) {
echo $menu->plaintext;
}

Спасибо всем, и извините за мой плохой английский 🙂

0

Решение

В качестве альтернативы вы могли бы указать на первый <li> дети из основного <ul> во-первых, и оттуда, цель каждого <a> как ->children(0),

foreach($html->find('ul#menu-test-header', 0)->children() as $li) {
echo $li->children(0);
}

Sidenote: Но я бы действительно предложил DOMDocument + DOMXpath над simple-html-dom:

$dom = new DOMDocument;
$dom->loadHTML($html_string);
$xpath = new DOMXpath($dom);
$first_list_links = $xpath->evaluate('//ul[@id="menu-test-header"]/li/a');
foreach($first_list_links as $links) {
echo $dom->saveHTML($links);
}

Пример вывода

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector