2011-10-22 90 views
2

我有格式化像這樣的HTML文件:PHP的Xpath獲得的innerHTML與innerHTML的標籤

<p class="p1">subject</p> 
<p class="p2">detail <span>important</span></p> 

<p class="p1">subject</p> 
<p class="p2">detail<span>important</span></p> 

我寫了一個PHP代碼來自動獲取每個P1,它是將它們插入到我的MySQL表詳細信息。

這是我的代碼:

$doc = new DOMDocument(); 

$doc->loadHTMLFile("file.html"); 

$xpath = new DomXpath($doc); 

$subject = $xpath->query('//p'); 


for ($i = 0 ; $i < $subject->length-1 ; $i ++) { 

if ($subject->item($i)->getAttribute("class") == "p1") 
    echo $subject->item($i)->nodeValue; 
} 
... 

這不是我完整的代碼,但問題是:

echo $subject->item($i)->nodeValue; 

這給了我<p>detail important</p>,沒有<span></span>標籤。

圍繞細節的「重要」部分設置span標籤非常重要。有什麼功能可以做到這一點,而不會感到頭痛?

在此先感謝

+0

可能重複的HTTP ://stackoverflow.com/questions/3615389/innerhtml-in-xpath) – hakre

+0

我發現這個SO條目,我希望將幫助:http://stackoverflow.com/questions/6286362/php-dom-get-nodevalue-html -without剝標籤s – SGB

回答

0

每當我需要解析HTML,我通過SimpleHTMLDOM運行:

http://simplehtmldom.sourceforge.net/

我建議使用1.11版。由於各種原因,1.5相當破碎。

+1

SimpleHTMLDOM由於設計而存在缺陷,因此我不會推薦它,而是基於DomDocument的東西,請參閱以下內容:http://stackoverflow.com/questions/3606792/best-way-to-parse-an-invalid- html-in-php – hakre

+0

感謝您的回覆,請檢查一下。 – user1008735

+0

這裏同樣的問題。 – user1008735

1

我找到了答案,我的問題:)感謝SimpleHTMLDOM

​​

}

的伎倆是:

html_entity_decode($element); 
的[?innerHTML的XPath中(