Ошибка Notice: Trying to get property of non-object в получить должность странице


у меня есть код, который должен получить название страницы, например "Facebook – войдите или зарегистрируйтесь" только то, что дает ошибку в этой строке

$title = $dom->getElementsByTagName('title')->item('0')->nodeValue;

это код:

function website_title($urli) {
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $urli);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// define um usuário agente.
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36');
   $html = curl_exec($ch);
   curl_close($ch);

   $dom  = new DOMDocument;
   @$dom->loadHTML($html);

   $title = $dom->getElementsByTagName('title')->item('0')->nodeValue;
   return $title;
}

echo website_title('https://www.facebook.com/');

Если кто-нибудь может мне помочь, я благодарен.

Author: Gabriel José, 2016-03-23

1 answers

У Вас есть некоторые ошибки в вашем коде, сначала его - Никогда не используйте @ для подавления сообщения об ошибке, это делает ваш код работать медленнее, и трудно debugar. Если бы не помещается @ бы знали, что причина ваших трудностей.

Во-Вторых, ваша проблема в частности заключается в следующем: Вы не это проходящих метод loadHTML() никакого значения, в основном переменной $html эта пустая. Это произошло по причине, что ваш код cURL не принял во внимание, что Facebook использует https и это запрос cURL не удалось, desencadenando любую проблему. Код ниже показывает функциональный вариант вашего кода.

<?php

function website_title($urli) {
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $urli);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// define um usuário agente.
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36');
   $html = curl_exec($ch);
   curl_close($ch);

   $dom  = new DOMDocument;
   $dom->loadHTML($html);


   $title = $dom->getElementsByTagName('title')->item('0')->nodeValue;
   return $title;
}

echo website_title('https://www.facebook.com/');

Я уже сделал библиотека для облегчения использования cURL, он очень простой, но может тебе помочь .

 4
Author: Renato Tavares, 2016-03-23 16:24:58