使用PHP Simple DOM Parser进行递归

时间:2016-06-04 06:39:32

标签: php recursion simple-html-dom

出于某种原因,我在使用Simple DOM Parser Library时得到了递归。

我的HTML就像

<div id="root">
    <div class="some_div">some text</div>
    <div class="field_1 misc1"><a href="#">Some text link</a> <strong>15</strong></div>
    <div class="field_2 misc2"><a href="#">Some text link</a> <strong>25</strong></div>
</div>

我创建了PHP脚本,包含单个文件

include_once('simple_html_dom.php');

我尝试从上面的HTML中获取15和25个值。但是当我跑步时

$ret = $html->find('div[id=root]'); 
print_r($ret);

我的脚本会返回很多递归 - 我做错了什么?如何才能正确获得这15和25个值?

1 个答案:

答案 0 :(得分:5)

不要在DOM对象上使用print_r()var_dump()。 DOM对象具有引用其子对象和父对象的属性。因此,当它打印子元素时,则需要打印其父元素。当它打印父节点时,它需要再次打印子节点,因此它会进入无限递归。

如果您想获得1525,则应使用与这些元素匹配的选择器。然后遍历结果并打印文本。

$ret = $html->find('#root strong');
foreach ($ret as $field) {
    echo $field->plaintext;
}