2011-11-25 75 views
0

我希望下面的代碼能夠迴應在配備的元素中找到的字符串。
這不可行嗎?從DOM樹中提取節點值

<? 

    $doc = new DOMDocument(); 
    $doc->loadHTML('http://website.com'); 

    $elements = $doc->getElementByID("equipped"); 

    echo $elements->nodeValue . "\n"; 



    ?> 
+0

它是什麼類型的元素? – prodigitalson

+0

我已經嘗試了幾種不同的元素。divs和span主要是通過 – Shawn

+0

不應該是'loadHTMLFile'嗎? – fardjad

回答

1

當使用DOMDocument::getElementById(),我建議你向物業validateOnParse設置爲true,以確保文檔的格式正確,並且該方法將正常工作。

如果節點的內容只是文本,您可以嘗試textContent屬性。 nodeValue屬性值可能因元素類型而異。

它應該是這樣的:

<?php 
    $doc = new DOMDocument(); 
    $doc->validateOnParse = true; 
    $doc->loadHTMLFile('http://website.com'); 
    $element = $doc->getElementById("equipped"); 

    if (!is_null($element)) { 
     $content = $element->nodeValue; 

     if (empty($content)) { 
      $content = $element->textContent; 
     } 

     echo $content . "\n"; 
    } 
?> 

希望它能幫助。

+0

似乎應該工作,但事實並非如此。我想知道在我們回顯值之前是否可以查看數組是否爲空 – Shawn

+0

問題是getElementById()方法返回單個元素。它是否拋出任何異常?錯誤日誌中是否有任何內容? – ramsvidor

+0

哎呀..剛剛在代碼中發現錯誤。更新。 – ramsvidor