2016-07-24 10 views
-1

http://php.net/manual/en/tidy.body.php<body> 태그로 감싸 진 본문 내용을 반환합니다. <body> 태그가없는 본문 내용을 얻으려면 어떻게해야합니까? 나는 몇 가지 가능한 해결책을 찾았지만 매우 우아하지는 않습니다.깔끔한 태그를 사용하지 않고 몸체 가져 오기

$tidy = new tidy; 
$tidy->parseString($html); 
$tidy->cleanRepair(); 

$body_content=trim(ltrim(rtrim(trim($tidy->body()->value),'</body>'),'<body>')); 
var_dump($body_content); 

$body=$tidy->body()->value; 
$body_content=substr($body,7,strlen($body)-16); 
var_dump($body_content); 

답변

1

$tidy->body() 시체를 나타내는 tidyNode 인스턴스를 반환합니다. 각 tidyNode은 각 자식 요소에 대해 tidyNode 인스턴스의 배열을 포함하는 child 속성을 포함합니다. 이 하위 태그를 반복하면 body 태그의 내부 HTML을 다시 작성할 수 있습니다. 예를 들면 다음과 같습니다 tidyNode 클래스에 대한

string(36) "<h1>Hello!</h1> 
<p>Hello world!</p> 
" 

더 자세한 정보는 documentation에서 찾을 수 있습니다

<?php 
$html = <<<'HTML' 
<html> 
    <head><title>test</title></head> 
    <body> 
     <h1>Hello!</h1> 
     <p>Hello world!</p> 
    </body> 
</body> 
</html> 
HTML; 

$tidy = new tidy; 
$tidy->parseString($html); 
$tidy->cleanRepair(); 

$bodyInnerHtml = ''; 
foreach($tidy->body()->child as $child) { 
    $bodyInnerHtml .= (string)$child; 
} 
var_dump($bodyInnerHtml); 

가 발생합니다.

+0

Pieter에게 감사드립니다. 귀하의 접근 방식은 좀 더 우아하지만 어쩌면 나는 해킹 가능성이 훨씬 빨라질 것입니다. – user1032531