Php, DiDom парсер. Как вывести href?

Доброе, начал изучать сей "чудный" парсер и столкнулся с тем что в интернете примеров кот наплакал.
Ищу помощи гуру по данному парсеру.

собственно что есть

Парсим некий сайт.
$document = new Document('некий сайт', true);

Получаем список всех div, class=links
$r_div=$document->find('div[class="links"]');

А как теперь в найденном получить все ссылки?

Делаю:
foreach($r_div as $div)
{
	$track=$div->find('a[class="track-more-info"]');
}


Но когда пытаюсь получить значение href, встал вопрос, а как это сделать..

В вики всего один пример
echo $document->html();

Ну, ок делаем для проверки.
echo $track->html();

И получаем
Fatal error: Call to a member function html() on a non-object


Хотя var_dump говорит что в $track есть информация

Пытался и $track->href и прочие варианты...
  • Вопрос задан
  • 991 просмотр
Решения вопроса 1
lidacriss
@lidacriss
wtf
исходя из "документации" Imangazaliev/DiDOM
должно так сработать:
$track->href
или
$track->attr('href');
$track->getAttribute('href');


UPD
так даже на русском есть документация

какую вики вы читали?

UPD
foreach($r_div as $div)
{
  $track=$div->find('a[class="track-more-info"]');
}

здесь в $track получается массив с найденными элементами a[class="track-more-info"]
поэтому вам следует выводить либо так:
foreach ($track as $item) {
    echo $item->href;
}

либо
$list = $div->find('a[class="track-more-info"]');
$track = array_shift($list);
if (!empty($track)) {
    echo $track->href;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
tigroid3
@tigroid3
PHP, YII2, SQL, Postgres, Docker, SPHINX, GIT
$track = $div->find('a[class="track-more-info"]');
$track->getAttribute('href');

или
$track->attr('href');
попробуйте так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы