使用 PHP 简单 DOM 解析器的递归

2024-05-06

由于某种原因,我在使用简单 DOM 解析器库时遇到了递归。

我的 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 值?


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

如果你想得到15 and 25,您应该使用与这些元素匹配的选择器。然后循环结果并打印文本。

$ret = $html->find('#root strong');
foreach ($ret as $field) {
    echo $field->plaintext;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 简单 DOM 解析器的递归 的相关文章

随机推荐