2016-03-10 3 views
2

, потому что мой хост-сервер отключить использованиеКак вернуть 'объект', а не строку или html, используя 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"]'); 

возвращается ошибка:

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

Я предполагаю, что проблема в том, что $ HTML не является объектом?

код работал, когда я использовал

$html = file_get_html($url); 

Есть ли способ решить эту проблему?

ответ

1

Имеется функция str_get_html(), доступная в SimpleHTMLDOM, которую вы можете использовать для загрузки возвращаемых значений curl.

Просто modofy его соответствующим образом:

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.

+0

$ output = str_get_html ($ output); был ключом. спасибо alot –

+0

@ Joon.P уверен, что это помогло – Ghost

Смежные вопросы