У меня есть html-файл, который выглядит так:
<ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> </ul> <ul> <li>smth 1 2 3..</li> <li>another</li> <ul> <ul> <li>smth 1 2 3..</li> <li>another</li> <ul>
Я пытаюсь получить элементы только из первого списка ul. Я использую этот код, но он возвращает ошибки:
<?php $dom = new DOMDocument(); $dom->loadHTML($data); $postalCodesList = $dom->getElementsByTagName('ul'); foreach ($postalCodesList->item(0) as $postalCodesList) { echo $postalCodesList->nodeValue.'<br />'; } ?>
Передача DomNode для foreach не позволит вам выполнять итерацию через своего дочернего элемента, вы можете легко получить список li
s и выполнить итерацию через них.
<?php $dom = new DOMDocument(); $dom->loadHTML($data); $postalCodesList = $dom->getElementsByTagName('ul'); foreach ($postalCodesList->item(0)->getElementsByTagName('li') as $postalCodesList) { echo $postalCodesList->nodeValue.'<br />'; } ?>
DEMO