2013-02-22 129 views
2

我想要在HTML頁面中獲得第九個table元素的所有td使用DOM獲取值HTML HTML

我開始用這個,但我不知道如何去完成它:

define('GLPI_ROOT', '..'); 
$content = GLPI_ROOT . "/front/yourpage.html"; 
$dom = new DOMDocument(); 
@$dom->loadHTML($content);  
$xpath = new DOMXPath($dom); 

$attbs = $xpath->query("//table td"); 
foreach($attbs as $a) { 
    print $a->nodeValue; 
} 

我已經試過這一個了,但它沒有工作:

$dom = new DOMDocument(); 
$dom->loadHTMLFile("yourpage.html"); 
$tables = $dom->getElementsByTagName('table'); 
$table = $tables->item(8); 

foreach ($table->childNodes as $td) { 
    if ($td->nodeName == 'td') { 
    echo $td->nodeValue, "\n"; 
    echo "<script type=\"text/javascript\"> alert('".$td->nodeValue."');</script>"; 
    } 
} 

我得到這個錯誤:

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: expecting ';' in yourpage.html, line: 33 

回答

1

您的第一個不起作用,因爲您似乎並不瞭解XPath的工作原理,但您的第二個可能是更好的選擇。

那就是說,什麼時候有<td>曾經是<table>的一級孩子?您可以在$table上再次使用getElementsByTagName,這很有效。

+0

tnks我的兄弟,你說((在$表上再次使用getElementsByTagName)) 你能寫嗎? plz 和我想要的是循環低谷中的每個'td'元素並得到值 – user2077308 2013-02-22 18:16:18

+0

我得到這個錯誤: **警告:DOMDocument :: loadHTMLFile():htmlParseEntityRef:期待';'在yourpage.html中,行:33 ** – user2077308 2013-02-22 18:20:21

+1

該錯誤表示您的HTML輸入無效。很可能你有一個非轉義的&&。 – 2013-02-22 18:21:20