2016-07-24 31 views
-1

http://php.net/manual/en/tidy.body.php wird den Körper Inhalt mit dem <body> Tag umgebrochen. Wie bekomme ich den Body-Inhalt ohne das <body>-Tag? Ich habe mir ein paar mögliche Lösungen ausgedacht, aber sie sind nicht sehr elegant.Get Körper ohne Tags mit ordentlich

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

Antwort

1

$tidy->body() gibt eine Instanz tidyNode den Körper darstellt. Jeder tidyNode enthält eine child -Eigenschaft, die ein Array von tidyNode Instanzen für jedes untergeordnete Element enthält. Sie können diese untergeordneten Elemente durchlaufen, um das innere HTML des body-Tags neu zu erstellen. Zum Beispiel:

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

bewirkt:

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

Mehr Informationen über die tidyNode Klasse können in den documentation finden.

+0

Dank Pieter, Ihr Ansatz ist eleganter, aber vielleicht werde ich mit meinem Hack bleiben, da es wahrscheinlich viel schneller ist. – user1032531