phpQuery выбирает div внутри первого li

У меня есть страница HTML, что я пытаюсь прочитать (использовал htmlsql.class.php, но так как он слишком старый и устаревший, то я должен использовать phpQuery).

HTML-разметка:

<ul class="small-block-grid-1 medium-block-grid-2 large-block-grid-3">
<li>
<div data-widget-type="epg.tvGuide.channel" data-view="epg.tvGuide.channel" id="widget-765574917197" class=" widget-epg_tvGuide_channel">
<div class="group-box">
<div class="group-header l-center" data-action="togglePreviousBroadcasts">
<span class="header-text">
<img src="logo.png" style="height: 40px" />
</span>
</div>

<div>
<div class="tvGuide-item is-past">
<span data-action="toggleEventMeta">
06:15 what a day
</span>
<div class="tvGuide-item-meta">
Some text.
<div><a href="/little_charmers?uniqueId=0082201701250415">Näita rohkem</a></div>
</div>
</div>
<div class="tvGuide-item is-current">
<span data-action="toggleEventMeta">
06:15 what a day
</span>
<div class="tvGuide-item-meta">
Some text.
<div><a href="/little_charmers?uniqueId=0082201701250415">Näita rohkem</a></div>
</div>
</div>
<div class="tvGuide-item">
<span data-action="toggleEventMeta">
06:15 what a day
</span>
<div class="tvGuide-item-meta">
Some text.
<div><a href="/little_charmers?uniqueId=0082201701250415">Näita rohkem</a></div>
</div>
</div>

</div>
</div>

Тогда с предыдущей вещью было страшно легко:

$wsql->select('li');

if (!$wsql->query('SELECT * FROM span')){
print "Query error: " . $wsql->error;
exit;
}

foreach($wsql->fetch_array() as $row){

Но я не мог читать класс, поэтому мне нужно знать, когда класс является текущим, а когда нет.

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

Я хотел бы иметь текст «span» и мета элемента, также я хотел бы знать, когда класс div «is-past» или «is-current»

0

Решение

Вы можете найти информацию о phpQuery здесь: https://code.google.com/archive/p/phpquery/

Я предпочитаю «однофайловую» версию сверху в загрузках:
https://code.google.com/archive/p/phpquery/downloads

Простые примеры на основе вашего кода:

// for loading files use phpQuery::newDocumentFileHTML();
// for plain strings use phpQuery::newDocument();
$document = phpQuery::newDocumentFileHTML('http://domain.com/yourFile.html');

$items = pq($document)->find('.tvGuide-item');

foreach($items as $item) {
if(pq($item)->hasClass('is-past') === true) {
// matching past items
}

if(pq($item)->hasClass('is-current') === true) {
// matching current items
}

//  examples for finding elements and grabbing text/attributes
$span = pq($item)->find('span');
$text_in_span = pq($span)->text();

$meta = pq($item)->find('.tvGuide-item-meta');
$link_in_meta = pq($meta)->find('a');
$href_of_link_in_meta = pq($link_in_meta)->attr('href');
}
0

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

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

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