如何使用PHP简单DOM解析器为具有id和类的div?

时间:2012-05-10 00:18:20

标签: php dom

我会用什么代码来获取包含id和class的div的信息? 例如,我如何使用PHP Simple DOM Parser来查看这个div?

<div id="the-id" class="the-class">

我知道如果div中只有一个id,我会使用$html->find('div[id=the-id]', 0);,但是如何使用class和id解析div?

4 个答案:

答案 0 :(得分:2)

你能扩展类似css的选择器吗?

我没有测试过,但我认为以下任何一项都应该产生你想要的结果。

$html->find('div.the-class[id=the-id]', 0);
$html->find('div.the-class#the-id', 0);
$html->find('div[id=the-id][class=the-class]', 0); // only if that's the only
$html->find('div[id=the-id][class~=the-class]', 0); // even if there's multiple classes

答案 1 :(得分:0)

简单的dom解析器查询字符串就像css一样工作。要查找ID为#34; -id&#34;的div,请使用->find('div#the-id')。据推测,您拥有唯一的ID,因此您只需要这些ID。

如果您真的想要,可以使用->find('div#the-id.the-class'),但通常不必具体。

答案 2 :(得分:0)

$html->find('#the-id .the-class', 0);
//or
$html->find('[id=the-id] [class=the-class]', 0);

按空格分隔元素。

// Find all <li> in <ul>
$es = $html->find('ul li');

// Find Nested <div> tags
$es = $html->find('div div div');

// Find all <td> in <table> which class=hello
$es = $html->find('table.hello td');

// Find all td tags with attribite align=center in table tags
$es = $html->find(''table td[align=center]');

// Find all <li> in <ul>
foreach($html->find('ul') as $ul)
{
       foreach($ul->find('li') as $li)
       {
             // do something...
       }
}

// Find first <li> in first <ul>
$e = $html->find('ul', 0)->find('li', 0);

http://simplehtmldom.sourceforge.net/manual.htm

答案 3 :(得分:-2)

你确定要在php中执行此操作吗?在javascript中执行此操作非常简单

var elements = document.getElementsByClassName("the-class");
for (var element in elements)
{
    var id = element.getAttribute("id");
}

...交替地

var elements = document.getElementsByTagName("div");
for (var element in elements)
{
    var id = element.getAttribute("id");
    var class_name = element.get.Attribute("class");
}