我一直在尝试使用 DOM 解析跨度类中的文本时遇到问题。这是我的代码示例。
$remote = "http://website.com/";
$doc = new DOMDocument();
@$doc->loadHTMLFile($remote);
$xpath = new DOMXpath($doc);
$node = $xpath->query('//span[@class="user"]');
echo $node;
这将返回以下错误 -> “可捕获的 fatal error :类 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>
最佳答案
这个电话
$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
的变量名更改为更合适的名称会很好。
关于php - 使用 DOM PHP 解析跨度类文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5273005/