Ошибка 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/');
Если кто-нибудь может мне помочь, я благодарен.
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, он очень простой, но может тебе помочь .