2011-01-22 30 views
0

http://simplehtmldom.sourceforge.net/manual.htmを使用すると、HTMLファイルのインラインCSSを抽出できますか?HTMLからインラインCSSを抽出することはできますか?

このパーサーは純粋なhtmlの場合、(私が間違っていれば正解)CSSタグを解析できません.HTMLファイルのインラインCSSを抽出する方法はありますか?

+0

インラインCSS(内側の 'style'要素)やインラインスタイル(要素の' style'属性の内側)を解析しますか? – alexn

+1

インラインCSSはHTMLの一部です。それは単に 'style'タグの内容、または' style'属性の値です。したがって、HTMLパーサーを使用してこれらの値を取得できるはずです。 – GolezTrol

+0

インラインは常に要素の内側のスタイル属性と呼ばれ、前者はドキュメント内のスタイルになります – jondavidjohn

答えて

3

あなたが本当にこれを抽出するためにsimplehtmldomを使用する必要がある場合:については

$css = $html->find('style')->innertext; 

<style> 
... 
</style> 

利用の場合


<div style="background:blue; color:white;"></div> 

用途:

$css = $html->find('div[style]')->style; 

style atributeまたは複数の<style>で複数のdivがある場合、あなたはそれらの間のループにforeachを使用することができます。

1

これは動作するはずです:

$doc = new DOMDocument(); 
$doc->loadHTML('<html><body style="color: red"></body></html>'); 

$els = $doc->getElementsByTagName('*'); 

for($i = 0; $i < $els->length; $i++) 
    echo $els->item($i)->getAttribute('style'); // color: red 
1

を通常のHTMLパーサの使用:

  • 要素のタグがstyleある場合は、要素の内容を取得
  • 要素があれば、すべての要素を

    1. ウォーク属性がstyleの場合、その属性の値を取得します。
  • 0
    find('css','div[style*="display:block;"] ') 
    

    このようにして、属性display:blockのスタイルを見つけることができます。これを必要に応じて変更し、インラインCSSを入手できます。

    関連する問題