2011-06-18 42 views
1
<?php 
$response = 
'<style><div id="subhead"></div></style>'; 
//echo $response; 

$doc = new DOMDocument(); 

$doc->loadHTML($response); 

$finder = new DomXPath($doc); 

$term_select = $finder->query('//div[@id="subhead"]'); 

var_dump($term_select->item(0)); 

?> 

後續代碼var_dump得到NULL,我也得到8號線這樣的警告:通過簡單的XPath的bug困擾

Warning: DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 1 on line 8 

請注意,這不是我的HTML(我刮痧),因此改變HTML不是一個選項。

回答

2

問題是你不能有一個DIV元素而不是一個STYLE,所以當你使用loadHTML時,它無法驗證HTML。如果你做了$doc->saveHTML();,你很快就會意識到它將<div id="subhead">包裝在CDATA中。

要解決該問題,請改爲使用loadXML()

$doc->loadXml($response); 
+0

再次感謝!原來我有另一個問題,但我會作爲一個新的問題發佈,如果我不能解決它.. – babonk

+0

張貼新問題與loadXML在這裏:http://stackoverflow.com/questions/6393401/problem-with-invalid -xml-html-in-php-dom – babonk

+1

@babonk - 我爲你的新問題提供了一個答案。 –

2

loadHTML()希望在字符串中找到HTML,但這不是有效的HTML,所以字符串不能正確加載。 XPath將不會有該<div>元素。改爲嘗試loadXML()

+0

謝謝.. upvoting你,所以你也可以得到積分 – babonk