2016-06-13 8 views
0
$contents = '<table><tr><td style="background-color:#fffddd;">Row 1 Column 1</td><td style="background-color:#444;">Row 1 Column 2</td></tr><tr><td style="background-color:#555;">Row 2 Column 1</td><td style="background-color:#666;">Row 2 Column 2</td></tr></table>'; 

$DOM = new DOMDocument; 
$DOM->loadHTML($contents); 

$items = $DOM->getElementsByTagName('tr'); 

$str = ""; 
foreach ($items as $node) { 
    foreach ($node->childNodes as $element) { 
     $str .= $element->nodeValue . ", "; 
    } 
    $str .= "<br />"; 
} 
echo $str; 
td

このコードリターンテキストが、どのようにtdからスタイルbackground-colorを取得しますか?DOMDocument parse - TDの背景色を取得する方法は?

答えて

1

私はそれをテストしていませんでしたが、それは次のようになります。

$element->getAttribute('style'); 

複数のスタイルは、あなたのスタイルタグである場合は、正規表現を使用することができます。

更新:

$re = "/background-color:\\s*(\\#.*?);/"; 
$str = "background-color: #fffddd; color: #000; font-size: 14px;"; 
preg_match($re, $str, $matches); 

$matchesは、背景色が含まれている必要があります。しかしこれも十分にテストされていません。コーナーケースの場合、RegExを少し微調整する必要があるかもしれません。

+0

ああ、ありがとう、私は - >スタイルを使用して空の結果を得る(しかし、どのように値 '背景 - 色'を取得するこのコードで?私はフル行を取得 '背景色:#fffddd;' –

1

->getAttribute("style")style=""のアトリビュートにアクセスできます。あなたのスタイルの意志は、例えば(ように見える場合、

echo $str[0][0]; // Row 1 Column 1, 
echo $str[0][1]; // background-color:#fffddd; 

しかし:

$str = array(); 
foreach ($items as $node) { 
    foreach ($node->childNodes as $element) { 
     $str[] = array($element->nodeValue . ", ", $element->getAttribute("style")); 
    } 
} 

コードが上記の値とスタイルが含まれている2次元配列を返します:あなたのforeachでは、あなたはこれを追加することができます):

style="background-color: #fffddd; color: #000; font-size: 14px;" 

PHPのリターンは次のようになります。

background-color: #fffddd; color: #000; font-size: 14px; 

背景色がの場合は、このstyle=""の返信を解析する必要があります。

関連する問題