我需要从以下代码段中获取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()
任何人都可以帮助我。
答案 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/>";
}
}
它对我有用!