使用 PHP 简单 DOM 解析器的递归
Recursion using PHP Simple DOM Parser
出于某种原因,我在使用简单 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);
我的脚本 returns 很多递归 - 我做错了什么以及如何正确获得这 15 和 25 值?
不要在 DOM 对象上使用 print_r()
或 var_dump()
。 DOM 对象具有引用其子项和父项的属性。所以当它打印子元素时,它需要打印它的父元素 属性。并且当它打印父级时,它需要再次打印子级,所以它进入了无限递归。
如果你想得到 15
和 25
,你应该使用匹配这些元素的选择器。然后遍历结果并打印文本。
$ret = $html->find('#root strong');
foreach ($ret as $field) {
echo $field->plaintext;
}
出于某种原因,我在使用简单 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);
我的脚本 returns 很多递归 - 我做错了什么以及如何正确获得这 15 和 25 值?
不要在 DOM 对象上使用 print_r()
或 var_dump()
。 DOM 对象具有引用其子项和父项的属性。所以当它打印子元素时,它需要打印它的父元素 属性。并且当它打印父级时,它需要再次打印子级,所以它进入了无限递归。
如果你想得到 15
和 25
,你应该使用匹配这些元素的选择器。然后遍历结果并打印文本。
$ret = $html->find('#root strong');
foreach ($ret as $field) {
echo $field->plaintext;
}