Я пытаюсь извлечь все из тегов <body>
обычного HTML-документа.
function extractHtml($html){
$doc = new simple_html_dom();
$html = $doc->load($html);
return $doc->find("body")->innertext;
}
Передаваемый $html
представляет собой полный HTML-документ, хотя при его загрузке с использованием load()
возвращается значение null. Затем это, очевидно, приводит к тому, что find() выдает уведомление
Примечание: попытка получить свойство не-объекта
Что может быть причиной того, что функция load() возвращает значение null?
В прошлом я сделал;
function extractHtml($html){
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
// get everything inside of <body>
$body = $dom->getElementsByTagName('body');
if($body && 0<$body->length) {
$body = $body->item(0);
}
$search = array('<body', 'body>');
$replace = array('<div', 'div>');
return str_replace($search, $replace, $dom->saveHTML($body));
}
Хотя теперь мне нужно, чтобы это работало в более старых версиях PHP, чтобы решить эту ошибку.
Предупреждение: DOMDocument::saveHTML() ожидает ровно 0 параметров, задан 1
Что и послужило причиной для тестирования с помощью простого html dom.
EDIT: При тестировании, если я скопирую пример из документации, изменив HTML следующим образом, я все равно получаю ту же ошибку.
$doc->load("<html><body>Hello!</body></html>");
find()
, а не->innertext
? Например,$doc
, вероятно, неNULL
, но поискfind
возвращаетnull
? - person Nanne   schedule 30.04.2012Although I now need this to work in older versions of PHP to solve this error
, может возникнуть проблема с PHP v‹5 - person web-nomad   schedule 30.04.2012