简单 html dom 解析器无法获得正确的值

simple html dom parser can't get correct value

我使用 simple html dom parser

进行抓取
include 'simple_html_dom.php';

function getSslPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_REFERER, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

$html = getSslPage('http://forum.xda-developers.com/note-4-sprint');

$result = $html->find('.forumbox-header',0); //error here

echo $result;

我执行输出将是 Sprint Samsung Galaxy Note 4,它有 class of forumbox-header。我不知道我在那里说 Fatal error: Call to a member function find() on a non-object 时出错。

您的 getSslPage 函数 returns a string($url 页面的 html 源代码)。

虽然返回值是一个字符串,但您将其视为一个对象 $html->find,因此会出现错误。

Fatal error: Call to a member function find() on a non-object

简单 Html DOM 解析器库有 2 个函数来创建 DOM 对象:

  • file_get_html - 从 URL
  • 创建一个 DOM 对象
  • str_get_html - 从字符串
  • 创建一个DOM对象

因为您已经有了 HTML 字符串,只需按以下方式编辑您的代码:

$html = str_get_html($html);
$result = $html->find('.forumbox-header',0);