使用DOM PHP解析span类文本

时间:2011-03-11 12:42:11

标签: php parsing dom

尝试使用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>

1 个答案:

答案 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的变量名更改为更合适的名称会很好。