PHP DOM,查找某个div中的文本

时间:2010-07-02 03:14:00

标签: php dom

我目前正在为一款不使用正则表达式的游戏开发跟踪器。在尝试解析某些部分的HTML时,我遇到了障碍。

我想解析的是什么:

<td class="alt1" id="td_post_139718"> 
<!-- message, attachments, sig --> 
        <!-- icon and title --> 
        <div class="smallfont"> 
            <img class="inlineimg" src="images/icons/icon1.gif" alt="Default" border="0" /> 
            <strong>Re: TERA's E3 2010 Coverage</strong> 
        </div> 

我的代码:

$titleArray = array();
        foreach($idArray as $id) {
            $title = $dom->getElementById('td_post_'.$id);
            $smallFont = $title->getElementsByTagName("div");
            echo $smallFont->nodeValue;
        }

它产生:

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

Notice: Undefined property: DOMNodeList::$nodeValue in C:\wamp\www\crawler\crawler.php on line 71

我试图找到一个动态的文本。

我尝试过各种各样的组合试图让它发挥作用,但我已经能够实现它。

2 个答案:

答案 0 :(得分:4)

::getElementsByTagName给出节点列表。您必须遍历它以检索单个<div>。例如:

foreach ($title->getElementsByTagName("div") as $smallFont)) {
    echo htmlspecialchars($smallFont->nodeValue), "<br />;
}

您也可以使用textContent属性。参见例如this discussion

答案 1 :(得分:3)

getElementsByTagName返回DOMNodeList,而不是单个节点。在尝试访问nodeValue之前,您必须从列表中访问单个节点:

echo $smallFont->item(0)->nodeValue;