0

HTMLテーブルをループしてそこから値を取得し、tdでテーブルの値を返す次のスクリプトがあります。

$tds = $dom->getElementsByTagName('td');

                // New dom
                $dom2 = new DOMDocument;

                $x = 1;
                // Loop through all the tds printing the value with a new class
                foreach($tds as $t) {
                    if($x%2 == 1)
                        print "</tr><tr>";

                    $class = ($x%2 == 1) ? "odd" : "even";

                    var_dump($t->textContent);

                    print "<td class='$class'>".$t->textContent."</td>";
                    $x++;
                }

しかし、textContent は HTML タグを取り除いているようです (たとえば、<p></p>ラッパー タグです)。どうすれば値を与えることができますか?

または、これを行う別の方法はありますか?私は次のhtmlを持っています

<table>
<tr>
<td>q1</td>
<td>a1</td>
</tr>
<tr>
<td>q2</td>
<td>a2</td>
</tr>
</table>

そして、私はそれを次のように見せる必要があります

<table>
<tr>
<td class="odd">q1</td>
<td class="even">a1</td>
</tr>
<tr>
<td class="odd">q2</td>
<td class="even">a2</td>
</tr>
</table>

常にまったく同じように見えます (余分な要素行と変更される値を除く)。

何か助けはありますか?

4

1 に答える 1

0

MDNによると、これは textContent の予想される動作です。

tdDomDocument の s にクラスを追加するだけです

$tds = $dom->getElementsByTagName('td');
$x = 1;
foreach($tds as $td) {
    if($x%2 == 1){
        $td->setAttribute('class', 'odd');
    }
    else{
        $td->setAttribute('class', 'even');
    }
    $x++;
}
于 2012-05-30T20:20:25.703 に答える