情景
我正在使用 PHP 的 SimpleXML 来解析博客提要。树中最重要的节点是内容。我想修剪节点的脂肪,即博客站点添加的样式功能。它都包含在同一个节点中,并且对 html 实体进行了编码。FirePHP 日志显示该字符串是 HTML。
例如,内容节点如下所示:
<content type='html'>
BLAH BLAH BLAH.<div class="blogger-post-footer"><img width='1'
height='1' src='https://blogger.googleusercontent.com/tracker
6552111825067891333-7815715921198109330?l=cobracabanarecords.blogspot.com'
alt='' /></div>
<a href="http://4.bp.blogspot.com/-RQPMMDLPMqg/T9ePf9jbXFI/
AAAAAAAAAGs/6egu-05Zim4/s1600/blogHeader.jpg" imageanchor="1"
style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;
"><img border="0" height="92" src="http://4.bp.blogspot.com/
-RQPMMDLPMqg/T9ePf9jbXFI/AAAAAAAAAGs/6egu-05Zim4/s320/blogHeader.jpg"
width="320" /></a>
<a href="http://website.com">Homepage!</a>
</content>
我的问题
我怎样才能去掉我想要的部分,并留下臃肿?我想保留文本、图像和链接,但不需要博客的样式语法或类“blogger-post-footer”的元素。是否有一个类或函数可以识别那些特定的 HTML 元素并允许我去除不相关的元素?
更新
我尝试了推荐的 html_entity_decode 函数。现在我有一个字符串中的原始 html。我阅读了 DOMDocument 类并尝试了这个:
$doc = new DOMDocument();
$doc->loadHTML($htmlContent);
使用 firephp 记录显示 $doc 变量仅包含数字 1,我无法像处理 HTML 一样操作字符串。如果我可以让它工作,我认为下一步将是尝试一个 getElementsByTagName 函数,然后遍历节点列表来 removeChild,或者将它复制到一个数组中。我仍然可以在这方面使用一些指导。