2

我对 PHP 很陌生,所以我尝试使用 Simple HTML DOM Parser 从网站获取我需要的信息。这是示例节点:

<div>
    <h1>Hello</h1>
    <figure id="XXX">
        <div class="abc">ABC</div>
        <div class="qwe">QWE</div>
        <div class="zxc">ZXC</div>
    </figure>
</div>

$element 包含上面的节点。我需要得到的是“QWE”,所以我尝试:

$name = $element->find('figure[id=XXX]')->children(1)->innertext;

但现在的问题是:致命错误:在非对象上调用成员函数 children(),如果我停在 find('figure[id=XXX]') 上没问题,但它返回数组,我可以' t 得到确切的信息。

有什么解决办法吗?请帮助,提前谢谢。

4

2 回答 2

3

你去:

 $str = '<div>
            <h1>Hello</h1>
            <figure id="XXX">
            <div class="abc">ABC</div>
            <div class="qwe">QWE</div>
            <div class="zxc">ZXC</div>
            </figure>
        </div>';

$html = str_get_html($str);

$str = $html->find('figure[id=XXX]',0)->children(1)->plaintext;

echo($str);

find 返回元素,您需要单个元素,因此在 find 的第二个参数处设置索引 0(第一个)

于 2013-04-22T12:29:06.263 回答
0

最好这样做:

$html->find('figure#XXX > *[2]',0)->plaintext;
于 2013-04-22T23:20:54.130 回答