尝试获取非对象的属性的CURL PHP

尝试获取非对象的属性的CURL PHP,php,curl,simple-html-dom,Php,Curl,Simple Html Dom,我正在尝试使用简单的html dom解析通过CURL获得的html输出,但出现以下错误: 正在尝试获取非对象的属性“innertext” 以下是相关代码: $output = curl_exec($ch); if($output === FALSE) { echo "cURL Error: " . curl_error($ch); } curl_close($ch); $html = str_get_html($output); $kungtext_class = $html-&g

我正在尝试使用简单的html dom解析通过CURL获得的html输出,但出现以下错误:

正在尝试获取非对象的属性“innertext”

以下是相关代码:

$output = curl_exec($ch);

if($output === FALSE) {
    echo "cURL Error: " . curl_error($ch);
}

curl_close($ch);

$html = str_get_html($output);
$kungtext_class = $html->find('div[class=kungtext]');
$kungtext = $kungtext_class->innertext;

echo $kungtext;

输出变量是以文本形式收集的HTML,我从CURL中获得。

来自文档:

mixed find ( string $selector [, int $index] )
通过CSS选择器查找子对象。返回第n个元素对象,如果 设置了索引,否则返回一个对象数组

因此,在您的情况下,返回值保存在$kungtext_类中,这里的错误可能是:

1-find调用返回一个数组,因此必须执行以下操作:

foreach($kungtext_class as $element){
     echo $element->innertext;
}
2-find调用找不到任何具有类kungtext的元素,因此它返回null,innertext抛出错误是正常的


如果find方法只从dom返回一个具有类kungtext的元素,则代码将正常工作

$kungtext_class
为您提供了一个
数组
,您无法访问该属性,因为您得到的是一堆元素,而不是一个

见文件

通过CSS选择器查找元素。如果设置了索引,则返回第n个元素对象,否则返回对象的数组

所以你的代码应该是

foreach ($html->find('div[class=kungtext]') as $kungtext_class) {
    echo $kungtext_class->innertext;
}
或者,访问索引
0
(第一个元素):


旧答案

默认情况下,
curl\u exec()
返回一个
布尔值

您需要在curlopts中设置
CURLOPT\u RETURNTRANSFER
,然后它返回预期的字符串(成功时)

成功时返回
true
,失败时返回
false
。但是,如果设置了
CURLOPT_RETURNTRANSFER
选项,则成功时返回结果,失败时返回结果


你能检查一下$html里面是什么吗?@mohammedyasinsinechabli是的,它在$html=str\u get\u html($output)之后返回页面的html;添加$html->save();然后检查一下works@MohammedYassineCHABLI错误仍然存在:/addthisvar_dump(get_class($html));请告诉我结果:CURLOPT_RETURNTRANSFER=>true
foreach ($html->find('div[class=kungtext]') as $kungtext_class) {
    echo $kungtext_class->innertext;
}
$kungtext_class = $html->find('div[class=kungtext]', 0);
$kungtext = $kungtext_class->innertext;
// Before the curl_exec():
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);