我有一个像这样的html表
<table>
<tbody>
<tr>
<td><table>
<tbody>
<tr class="prdLi">
<td rowspan="2" class="prdNo"><span>310.</span></td>
<td colspan="2" class="prdDe" rowspan="2"><span>Pepsi</span></td>
</tr>
<tr class="prdLi">
<td class="prdAc"><span> 1.5L</span></td>
<td><span> </span></td>
</tr>
</tbody>
</table></td>
</tr>
</tbody>
</table>
表格保存为$ html
我想选择类.prdLi
的子元素我试过这样:
foreach($html->find('tr.prdLi') as $foo){
echo $foo;
}
我得到的输出就像这样
<span>310.</span>
<span>Pepsi</span
.
.
.
但我真正想得到的是具有父元素td.like的代码:
<td rowspan="2" class="prdNo"><span>310.</span></td>
<td colspan="2" class="prdDe" rowspan="2"><span>Pepsi</span></td>
.
.
.
请帮帮我
答案 0 :(得分:1)
由于Simple HTML DOM Parser支持类似选择器的CSS,因此您可以使用'tr.prdLi td'
指定td
个子tr
的子元素prdLi
。以下内容应该提供您正在寻找的内容:
$htmlstr = <<<EOD
<table>
<tbody>
<tr>
<td><table>
<tbody>
<tr class="prdLi">
<td rowspan="2" class="prdNo"><span>310.</span></td>
<td colspan="2" class="prdDe" rowspan="2"><span>Pepsi</span></td>
</tr>
<tr class="prdLi">
<td class="prdAc"><span> 1.5L</span></td>
<td><span> </span></td>
</tr>
</tbody>
</table></td>
</tr>
</tbody>
</table>
EOD;
$html = str_get_html($htmlstr);
foreach ($html->find('tr.prdLi td') as $foo) {
echo $foo . "\n";
}
请注意,在find()
主元素上调用simple_html_dom
。在您的示例中,结果已受到之前find()
的限制。
答案 1 :(得分:1)
什么andy说的是正确的,但直接孩子的css是> *
,因此:
foreach($html->find('tr.prdLi > *') as $foo){
echo $foo . "\n";
}