我想在php中使用简单的html dom刮一些html。我有一堆包含标签的标签。我想要的代码在bgcolor=#ffffff
和bgcolor=#cccccc
之间切换。有一些标签有其他bg颜色。
我想获得每个标记中包含bgcolor=#ffffff
或bgcolor=#cccccc
的所有代码。我不能只使用$ html-> find('tr'),因为还有其他我不想找的标签。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以将DOM加载到simplexml类中,然后使用xpath,如下所示:
$xml = simplexml_import_dom($simple_html_dom);
$goodies = $xml -> xpath('//[@bgcolor = "#ffffff"] | //[@bgcolor = "#cccccc"]');
您甚至可以将OR语法放在同一组括号中,但我需要仔细检查。
更新
抱歉,我以为你在谈论DOM扩展。我只是查找了simpledomhtml,它的查找功能似乎松散地基于XPath。为什么不这样做:
$goodies = $html -> find('[bgcolor=#ffffff], [bgcolor="#cccccc]');
答案 1 :(得分:1)
你也可以使用simplehtmldom
这是我解决问题的方法
<?php
include_once "simple_html_dom.php";
// the html code example
$html = '<table>
<tr bgcolor="#ffffff"><td>1</td></tr>
<tr bgcolor="#cccccc"><td>2</td></tr>
<tr bgcolor="#ffffff"><td>3</td></tr>
</table>';
// in this case I load the html code via string
$code = str_get_html($html);
// find elem by attribute
$trs = $code -> find('tr[bgcolor=#ffffff]');
foreach($trs as $tr){
echo $tr -> innertext;
}
$trs = $code -> find('tr[bgcolor=#cccccc]');
foreach($trs as $tr){
echo $tr -> innertext;
}
?>