我有以下脚本循环遍历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>
它总是看起来完全相同(减去额外的元素行和更改的值)。
任何帮助?
答案 0 :(得分:0)
根据MDN,这是textContent的预期行为。
您可以将该类添加到DomDocument
中的td
$tds = $dom->getElementsByTagName('td');
$x = 1;
foreach($tds as $td) {
if($x%2 == 1){
$td->setAttribute('class', 'odd');
}
else{
$td->setAttribute('class', 'even');
}
$x++;
}