シナリオ
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 関数を試してから、nodelist をトラバースして removeChild にするか、それを配列にコピーすることだと思います。これについては、まだいくつかのガイダンスを使用できます。