phpQuery 在第一个 li 中选择 div

phpQuery selecting div inside first 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){

但是我无法阅读 class 所以我需要知道 class 什么时候是最新的,什么时候不是。

当时我是 phpQuery 的新手,现实生活中的例子很难找到。 有人能给我指出正确的方向吗?

我想要 "span" 文本和项目元数据,此外我还想知道 div class 是 "is-past" 还是 "is-current"

您可以在此处找到有关 phpQuery 的信息:https://code.google.com/archive/p/phpquery/

我更喜欢 "one-file" 版本的下载量: 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');        
}