2012-04-30 2 views
0

일반 HTML 문서의 <body> 태그 내 모든 것을 추출하려고합니다. 그것이 사용하여로드 할 때 load()가 반환 널 (null)이지만 전달되는null을 반환하는 간단한 HTML DOM load() null

function extractHtml($html){ 

    $doc = new simple_html_dom(); 
    $html = $doc->load($html); 

    return $doc->find("body")->innertext; 
} 

$html는 전체 HTML 문서입니다.() null을 반환 부하의 원인이 될 수 무엇

비 객체

의 속성을 얻으려고 노력이는 분명히 찾기는() 통지를

공지를 생산하는 원인은?

나는 과거에했습니다. 지금이이 오류를

경고를 해결하기 위해 PHP의 이전 버전에서 작동 할 필요가 있지만

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

은 :있는 DOMDocument는 :: saveHTML는() 기대 정확히 0 매개 변수 1 주어진

간단한 html dom으로 테스트 한 이유는 무엇입니까?

편집 : 다음과 같이 HTML을 변경하여 설명서의 예제를 복사해도 테스트해도 동일한 오류가 발생합니다.

$doc->load("<html><body>Hello!</body></html>"); 
+0

'find()'가'-> innertext'가 아닌 통지를 생성합니까? 마찬가지로'$ doc'는 아마도'NULL'이 아니지만'find'가'null'을 리턴하고 있습니까? – Nanne

+0

doc에 따르면, http://simplehtmldom.sourceforge.net/index.htm, 그것은 PHP 5 +에서만 작동합니다 .... 그래서'이제는 PHP의 이전 버전에서이 문제를 해결할 필요가 있습니다. 이 오류', 그것은 PHP v 5에 문제가있을 수 있습니다. –

+0

@ Nanne 예. find ("body")를 제거하면 올바르게 작동하기 때문입니다. 왜 시신을 찾을 수 없습니까? –

답변

관련 문제