Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP简单HTML DOM解析器调用非对象上的成员函数children()_Php_Parsing_Simple Html Dom_Php Parser - Fatal编程技术网

PHP简单HTML DOM解析器调用非对象上的成员函数children()

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

我对PHP非常陌生,所以我尝试使用简单的HTMLDOM解析器从网站获取我需要的信息。 以下是示例节点:

<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;