dom文件获取href和nodeValue

时间:2015-04-06 09:27:52

标签: php

我需要从以下代码段中获取nodeValue和HREF

<a class="head_title" href="/automotive/pr?sid=0hx">Automotive</a>

为实现这一目标,我做了以下工作:

foreach($dom->getElementsByTagName('a') as $p) {

    if($p->getAttribute('class') == 'head_title') {

        foreach($p->childNodes as $child) {
            $name = $child->nodeValue;

            echo $name ."<br />";
            echo $child->hasAttribute('href');  
        }

    }
  }

它给我一个错误:

PHP Fatal error:  Call to undefined method DOMText::hasAttribute()

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

hasAttribute是DOMElements的有效方法,但您不能将其用于文本节点。你可以检查节点的类型,然后尝试提取值,它不是一个'文本'节点。以下代码可能对您有所帮助

foreach($p->childNodes as $child) {
   $name = $child->nodeValue;

   echo $name ."<br />";
   if ($child->nodeType == 1) {
       echo $child->hasAttribute('href');
   }  
}

它检查节点是否为'DOMElement'类型,并且仅当它是DOMElement时才调用hasAttribute方法。

答案 1 :(得分:0)

是的...我在编码中做了如下更改:

foreach($dom->getElementsByTagName('a') as $link) {
if($link->getAttribute('class') == 'head_title') {

        $link2 = $link->nodeValue;
        $link1 = $link->getAttribute('href');
        echo  "<a href=".$link1.">".$link2."</a><br/>";
}
  }

它对我有用!