我正在使用phpquery从网页中提取一些数据。我需要识别页面的菜单。我的实现是找到每个具有sibilings>的元素。 0和last-child是"a"
。我的代码是:
foreach($this->doc['*'] as $tagObj){
$tag = pq($tagObj);
if(count($tag->siblings()) > 0){
if($tag->find(":last-child")->tagName === "a")
echo trim(strip_tags($tag->html())) . "<br/>";
}
}
但是,由于
,我没有得到任何输出$标签 - &GT;发现( “:最后子”) - &GT;的tagName
没有返回任何东西。这是什么原因?
答案 0 :(得分:4)
我不知道这个库,但也许是这样的
$siblings = $tag->siblings();
if (($siblingCount = count($siblings)) && $siblings[$siblingCount - 1]->tagName === 'a') {
echo ...
}
答案 1 :(得分:3)
也许你应该使用:last 而不是:last-child
$li = null;
$doc['ul > li']
->addClass('my-new-class')
->filter(':last') // <--- :last
->addClass('last-li')
// save it anywhere in the chain
->toReference($li);
答案 2 :(得分:3)
您可以反向检查m.startComputation
:
例如:
a:last-child
这将检查foreach($this->doc['*'] as $tagObj){
$tag = pq($tagObj);
if(count($tag->siblings()) > 0){
if($tag->find("a:last-child"))
echo trim(strip_tags($tag->html())) . "<br/>";
}
}
的{{1}}标记,您可以轻松获取其内容。
愿这对你有所帮助。
答案 3 :(得分:0)
由于phpQueryObject
返回的pq
实现了Iterator
并使用公共数组$elements
来存储所有元素,我们需要使用{{1}来获取元素} function,返回具有get()
和DOMElement
属性的tagName
:
nodeName
两个属性都将输出具有$q = phpQuery::newDocumentHTML('<div><span class="test-span">Testing test</span></div>');
echo $q->find('.test-span')->get(0)->tagName; // outputs "span"
//echo $q->find('.test-span')->get(0)->nodeName; // outputs "span"
类的标记名称,当然为test-span
。