使用整洁来获取没有标签的身体

时间:2016-07-24 15:03:19

标签: php dom tidy

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 个答案:

答案 0 :(得分:2)

tidyNode返回表示正文的tidyNode个实例。每个child都包含一个tidyNode属性,其中包含每个子元素的<?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); 个实例数组。您可以循环遍历这些子项以重建body标记的内部html。例如:

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

将导致:

tidyNode

有关foodCode课程的更多信息,请参阅documentation