尝试使用DOM解析span类中的文本时遇到了问题。这是我的代码示例。
$remote = "http://website.com/";
$doc = new DOMDocument();
@$doc->loadHTMLFile($remote);
$xpath = new DOMXpath($doc);
$node = $xpath->query('//span[@class="user"]');
echo $node;
并返回以下错误 - > “可捕获的致命错误:类DOMNodeList的对象无法转换为字符串”。我很失落,我需要帮助!!!
我要做的是在此span标记之间解析用户名。
<span class="user">bballgod093</span>
以下是远程网站的完整资源。
<div id="randomwinner">
<div id="rndmLeftCont">
<h2 id="rndmTitle">Hourly Random <span>Winner</span></h2>
</div>
<div id="rndmRightCont">
<div id="rndmClaimImg">
<table cellspacing="0" cellpadding="0" width="200">
<tbody>
<tr>
<td align="right" valign="middle">
</td>
</tr>
</tbody>
</table>
</div>
<div id="rndmCaimTop">
<span class="user">bballgod093</span>You've won 1000 SB</div>
<div id="rndmCaimBottom">
<a id="rndmCaimBtn" class="btn1 btn2" href="/?cmd=cp-claim-random" rel="nofollow">Claim Bucks</a>
</div>
</div>
<div class="clear"></div>
</div>
答案 0 :(得分:2)
此次电话
$node = $xpath->query('//span[@class="user"]');
不返回字符串,而是返回DOMNodeList
。
您可以使用此列表,有点像数组(使用$node->length
表示元素数量,使用$node->item(0)
获取第一个元素)获取DOMNode
个对象。每个对象都有一个nodeValue
属性,它是一个字符串。
所以你会做类似
的事情$node = $xpath->query('//span[@class="user"]');
if($node->length != 1) {
// error?
}
echo $node->item(0)->nodeValue;
当然,将$node
的变量名更改为更合适的名称会很好。