如何使用phpquery找到标签名称?

时间:2015-07-27 05:25:20

标签: php jquery dom phpquery

我正在使用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

没有返回任何东西。这是什么原因?

4 个答案:

答案 0 :(得分:4)

我不知道这个库,但也许是这样的

$siblings = $tag->siblings();
if (($siblingCount = count($siblings)) && $siblings[$siblingCount - 1]->tagName === 'a') {
    echo ...
}

答案 1 :(得分:3)

也许你应该使用:last 而不是:last-child

根据library Google Page

$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