PHP简单HTML DOM解析器调用非对象上的成员函数children()
我对PHP非常陌生,所以我尝试使用简单的HTMLDOM解析器从网站获取我需要的信息。 以下是示例节点:PHP简单HTML DOM解析器调用非对象上的成员函数children(),php,parsing,simple-html-dom,php-parser,Php,Parsing,Simple Html Dom,Php Parser,我对PHP非常陌生,所以我尝试使用简单的HTMLDOM解析器从网站获取我需要的信息。 以下是示例节点: <div> <h1>Hello</h1> <figure id="XXX"> <div class="abc">ABC</div> <div class="qwe">QWE</div> <div class="zxc">ZX
<div>
<h1>Hello</h1>
<figure id="XXX">
<div class="abc">ABC</div>
<div class="qwe">QWE</div>
<div class="zxc">ZXC</div>
</figure>
</div>
但现在的问题是:致命错误:调用非对象上的成员函数children(),如果我在find('figure[id=XXX]')停止,这没有问题,但它返回数组,我无法获得确切的信息
有解决办法吗?请帮忙,提前谢谢。好了:
$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);
$str='1〕
你好
基础知识
QWE
ZXC
';
$html=str\u get\u html($str);
$str=$html->find('figure[id=XXX]',0)->子对象(1)->纯文本;
echo($str);
find返回元素,您需要单个元素,因此在find中的第二个参数处设置索引0(第一个),最好执行以下操作:
$html->find('figure#XXX > *[2]',0)->plaintext;
谢谢@Adidi!我估计这个问题差不多一个小时,但你几秒钟就解决了。非常感谢你。实际上,它会找到什么(字符串$selector[,int$index])索引的意思是什么?从集合/列表返回的元素-find始终返回一个列表,通过设置
$index
您告诉它您希望列表中的索引中有一个特定元素-因此,如果您选择id为必填项的元素作为第一个元素-意味着索引为零没有问题,请接受您的答案。非常感谢你的解释。XDSorry@Adidi,还有一个问题,当找不到标签时有什么解决方案?例如,假设当前元素中不存在?没关系-很乐意提供帮助-总是询问返回值-它是返回列表(数组)还是单个元素-如果找不到它,它将返回null或空数组,因此您可以这样做:$els=$html->find('something');如果($els){退出}否则{不退出}代码>
$html->find('figure#XXX > *[2]',0)->plaintext;