Как разобрать файл HTML с помощью модуля PHP DOM?

У меня есть следующий HTML-файл

<body>
<div class="container">
<div class="list">
<ul>
<li>
<a href="http://website1.com" ><img src="image1.jpg"></a>
</li>
<li>
<a href="http://website2.com" ><img src="image2.jpg"></a>
</li>
<li>
<a href="http://website3.com" ><img src="image3.jpg"></a>
</li>
....
....
....
</ul>
</div>
</div>
</body>

Разбор выше HTML-файла. Я хочу вывод, как это ..

 http://website1.com
image1.jpg
http://website2.com
image2.jpg
http://website3.com
image3.jpg
....
....

Видя вывод выше, вы можете догадаться, что мне нужны только значения ‘href’ и ‘src’ для каждого элемента списка.

Я пытаюсь разобрать с помощью стороннего плагина ‘simple_html_dom’.

<?php
include_once('simple_html_dom.php');
$html = new simple_html_dom();
$html->load_file("html_file.html");
foreach($html->find('div[class=list] ul li') as $li)
{
echo $li->find('a')->href."<br />";
echo $li->find('img')->src."<br />";
}
?>

но приведенный выше код не работает. Пожалуйста, скажите мне, если я сделал что-то не так или использование может помочь мне с помощью модуля PHP DOM, если вы знаете.

2

Решение

<?php
include_once('simple_html_dom.php');
$html = new simple_html_dom();
$html->load_file("html_file.html");
foreach($html->find('div.list a') as $a)
{
echo $a->href."<br />";
echo $a->children(0)->src."<br />";
}
?>

0

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

Вместо того, чтобы найти div[class=list] ul li, почему вы не ищете .list li«S? Документация для простого HTML DOM совсем не хватает, поэтому вам придется расплатиться им самим, но это должно сработать:

foreach($html->find('.list ul li') as $li)

Если это все еще не работает, я бы print_r($html->find('.list ul il'), чтобы увидеть, что это дает, и если это пустой массив, просто сокращайте селекторы, пока не найдете источник проблемы (т.е. print_r($html->find('.li ul'), так далее)

1

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