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);
答案 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。