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');
}
我有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');
}