2012-02-28 79 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