如何使用 cURL return 'object',而不是字符串或 html?

How to return 'object', not string or html using cURL?

因为我的服务器主机禁止使用

file_get_contents()

里面 simple_html_dom.php,

我换了

file_get_html()

function file_get_html_using_CuRL($url) {
    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

但是下面的代码

 $html = file_get_html_using_CuRL($url);
 $arvl2_arr = $html->find('div[class="arvl2"]');

returns 错误:

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

我猜问题是因为 $html 不是对象?

代码在我使用时有效

$html = file_get_html($url);

有什么办法可以解决这个问题吗?

SimpleHTMLDOM 中提供了 str_get_html() 函数,您可以使用它来加载 curl return 值。

相应地修改它:

function file_get_html_using_CuRL($url) {

    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $output = curl_exec($ch);
    $output = str_get_html($output);

    curl_close($ch);

    return $output;
}

这 return 是一个 SimpleHTMLDOM 对象,您现在可以在其中链接您喜欢的方法,例如 ->find() 等,然后进行必要的逻辑处理。

注意:当然要先加载 SimpleHTMLDOM 库。