【问题标题】:How to return 'object', not string or html using cURL?如何使用 cURL 返回“对象”,而不是字符串或 html?
【发布时间】:2016-06-24 17:54:07
【问题描述】:

因为我的服务器主机禁用了

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"]');

返回错误:

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

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

我使用的时候代码有效

$html = file_get_html($url);

有没有办法解决这个问题?

【问题讨论】:

    标签: php curl file-get-contents simple-html-dom


    【解决方案1】:

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

    相应地修改它:

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

    这将返回一个 SimpleHTMLDOM 对象,您现在可以在其中链接您喜欢的方法,如 ->find() 等,然后制定您的必要逻辑。

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

    【讨论】:

    • $output = str_get_html($output);是关键。非常感谢
    • @Joon.P 很高兴这有帮助
    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    • 2022-01-09
    • 2017-07-18
    • 2011-07-29
    • 2012-11-26
    • 1970-01-01
    • 2017-09-27
    相关资源
    最近更新 更多