1

スタイル属性を持つすべてのタグを取得する必要があります

$html = '<div style="font-style: italic; text-align: center; 
background-color: red;">On The Contrary</div><span 
style="font-style: italic; background-color: rgb(244, 249, 255); 
font-size: 32px;"><b style="text-align: center; 
background-color: rgb(255, 255, 255);">This is USA</b></span>';

$dom = new DOMDocument;
$dom->loadHTML($html);
$xp = new DOMXpath($dom);

foreach ($xp->query('/*[@style]') as $node) {
    $style =  $node->getAttribute('style');
    echo $style;
}

しかし、それは何も出力していません。私のコードのエラーは何ですか?? さらに、font-size、font-weight、font-family など、スタイル内の CSS プロパティ名のみを取得し、それらの値は取得したくありません。

4

2 に答える 2

5

式にもう 1 つスラッシュが必要です。

foreach( $xp->query('//*[@style]') as $node) {
    echo $node->tagName . " = " . $node->getAttribute('style') . "\n";
}

これは出力されます (既存の属性に改行が保持されることに注意してください):

div = font-style: italic; text-align: center; 
background-color: red;
span = font-style: italic; background-color: rgb(244, 249, 255); 
font-size: 32px;
b = text-align: center; 
background-color: rgb(255, 255, 255);
于 2013-03-29T16:00:34.927 に答える
0

xpathセレクターは

//*[@style]

スタイル コンテンツについては、それを解析する必要があります。つまり、

$attr_names = array_map( function($v){ return (explode(':',$v))[0];}, 
                          explode(';',$style));
于 2013-03-29T16:07:37.983 に答える