致命错误:未捕获错误:在解析数据时调用字符串上的成员函数find()

时间:2018-04-27 22:40:54

标签: php curl dom html-parsing simple-html-dom

所以我试图通过curl和简单的HTML dom从这个网页https://promo.pan.com.hr获取一些信息。但不幸的是,我一直收到错误,我无法弄清楚出了什么问题......

<?php
include_once("simple_html_dom.php");
function file_get_contents_curl($url)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$html = file_get_contents_curl("https://promo.pan.com.hr");


foreach($html->find("p") as $element)
echo $element->innertext . '<br>';
?>

任何人都知道我为什么会收到此错误?

致命错误:未捕获错误:在C:\ Server \ XAMPP \ htdocs \ pan \ index.php中调用字符串上的成员函数find():21堆栈跟踪:在C:\ Server中抛出#0 {main}第21行\ XAMPP \ htdocs \ pan \ index.php

第21行是:

foreach($html->find("p") as $element)

1 个答案:

答案 0 :(得分:0)

我认为file_get_contents_curl是在调用之上返回$data的函数。

您的问题是[curl_exec][1]返回一个字符串,该字符串是网页的内容。我假设您正在使用simple_html_dom,在这种情况下,您需要首先将该字符串转换为simple_html_dom对象:

$html = str_get_html(file_get_contents_curl("https://promo.pan.com.hr"));

或者您可以使用:

$html = file_get_html("https://promo.pan.com.hr");

并完全避免卷曲。