php - 使用 DOM PHP 解析跨度类文本

标签 php parsing dom

我一直在尝试使用 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/

相关文章:

android - android中如何进行XML解析?

c# - 查询过滤器表达式树的解析器

javascript - 如何根据 DOM 级别猜测浏览器兼容性?

javascript - 加载特定元素后可以调用函数吗?

php - 从数组中检索值以存储在表中

Php 邮件功能不以 html 格式发送

php - 提供网站 API 访问的框架?

php - MySQL-IF 语句错误

parsing - 有没有办法在解析后使用关联性和优先级表来修复其中包含运算符的表达式?

javascript - 在 dom 中使用 xpath 查找包含单词的文本节点