2012-02-28 149 views
-1

我试过使用循环打印,但它不打印下一个元素。
请给我一个最好解释的简单例子。使用PHP DOM
其次我可以得到一些有第id第X个元素。如何通过标识获取所有元素PHP DOM

更新

感谢。创建元素时出现错误id因此将其更改为class(抱歉是编程的新手,感谢提升我)。所以你可以让我知道如何提取所有具有相同类名的元素,其次我可以从具有该类名的文档中获取一些第X个元素。

+1

在具有给定ID的文档中不能有多个元素。 – lonesomeday 2012-02-28 07:01:25

+0

我想用'id'返回所有div元素 – krishna 2012-02-28 07:10:22

+0

ID值在文档中必须是唯一的。没有DOM库会给你getElementById()中的多个元素 - 名称中的线索:-) – 2012-02-28 08:39:17

回答

0

参考此链接

U可以使用此
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; 
} 
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]'); 
+0

谢谢。但它们都没有返回任何东西 – krishna 2012-02-28 07:55:20

4

如果您有与HTML相同id两个或两个以上的元素,您会收到错误是这样的:

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

因为不能有多个元素与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

相关问题