【问题标题】:How to filter <body> content from DOMDocument output? [duplicate]如何从 DOMDocument 输出中过滤 <body> 内容? [复制]
【发布时间】:2015-02-02 10:01:09
【问题描述】:

以下代码输出解析后的 html:

$domd = new DOMDocument('5.0', 'utf-8');
libxml_use_internal_errors(true);
$domd->loadHTML(mb_convert_encoding(($postDetails['content']), 'HTML-ENTITIES', 'UTF-8'));
libxml_clear_errors();
echo $domd->saveHTML();

但是,它会输出额外的标签,如&lt;html&gt;&lt;head&gt; 等。我只想获取body 标签内的内容。我如何做到这一点?

例如:如果&lt;body&gt; 标签包含&lt;p&gt; 或其他可能包含内容的标签,我需要按原样显示。

【问题讨论】:

  • @Jack 这个问题的答案要清晰得多。感谢您指出了这一点。但是它并没有显示摆脱身体标签的方法。
  • 那里的第一个答案在他们代码的注释部分提到了body标签。
  • @Jack 是的,我看到了。但这不适用于我这里的情况。 :/我确实有多个节点,它没有显示任何处理类似的东西。

标签: php html domdocument


【解决方案1】:

saveHTML() 支持可选参数$node。使用它,您可以在文档中指定一个节点,该节点应该被导出而不是整个文档。如果您只想导出&lt;body&gt;,请使用:

echo $domd->saveHTML($domd->getElementsByTagName('body')->item(0));

【讨论】:

  • 刚刚在另一个答案中找到了这个。但是那个没有删除body标签的干净方法
  • @maxxon15 哦,我虽然你想在结果中添加正文标签。这应该对您有所帮助:stackoverflow.com/a/2087136/171318
  • 成功了!感谢您指出了这一点。 :D
  • @maxxon15 不客气 :)
猜你喜欢
  • 2020-09-21
  • 2015-12-25
  • 1970-01-01
  • 2012-07-11
  • 2016-12-19
  • 2018-10-12
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
相关资源
最近更新 更多