如何通过id PHP DOM获取所有元素

时间:2012-02-28 06:57:36

标签: php dom domdocument getelementbyid

我尝试使用循环打印,但它不打印下一个元素 请给我一个简单的例子,它解释得最好。使用PHP DOM
其次,我可以得到一个具有id的第X个元素。

更新

感谢。我在创建具有相同id的元素时遇到错误,因此将其更改为class(抱歉是编程的新手,感谢提升我)。所以,请您告诉我如何提取具有相同类名的所有元素。其次,我可以从具有该类名的文档中获取一些Xth元素。

3 个答案:

答案 0 :(得分:5)

如果您在HTML中有两个或多个具有相同id的元素,则会收到如下错误:

  

警告:DOMDocument :: loadHTML()[domdocument.loadhtml]:ID myid   已在实体中定义

因为您不能拥有多个具有相同id的元素。如果你只有一个:

$dom = new DOMDocument();
$dom->loadHTML('
    <html>
        <body>
            <div></div>
            <div></div>
            <div id="myid">myid1</div>
        </body>
    </html>
');

$element = $dom->getElementById('myid');
echo $element->nodeValue."<br>";

此外,您可以使用DOMDocument::getElementsByTagNameXPath

答案 1 :(得分:2)

使用Simple HTML DOM Parser

$html = file_get_html('index.php');

// Find all images
foreach($html->find('div') as $element)
   echo $element->id. '<br>';

或特定div

// Find all <div> which attribute id=foo
$ret = $html->find('div[id=foo]'); 

答案 2 :(得分:0)

参考此链接

你可以使用这个http://uk.php.net/manual/en/domnodelist.item.php

$node = $parentnode->firstChild;
 do {
// do something
} while ($node = $node->nextSibling);


或本

for ($i = 0; $i < $nodeList->length; ++$i) {
    $nodeName = $nodeList->item($i)->nodeName;
    $nodeValue = $nodeList->item($i)->nodeValue;
}