2013-07-17 158 views
2

我需要對以下問題的支持,我有一個網站,我想通過xpath獲取產品說明。下面內容的HTML範例:通過xpath獲取div的HTML內容

<div id="description"> 
<span>some test</span> 
<img src="some src"> 
<p> 
    some content etc. 
</p> 
</div> 

,現在我用下面的代碼:

echo "<pre>".$result->item(0)->nodeValue."</pre>"; // there is always only one element 

$result = $xpath->query('//div[@id="description"]'); 

,但是當我用下面的行輸出結果我得到的只是未格式化的:「一些測試內容等」沒有空格和其他標記。我知道這是因爲xpath把所有其他標籤作爲節點,但...

我有一種方法來獲取div的內容爲HTML?

+0

中有其他標籤,你可以嘗試var_dump($ result-> item(0) - > ownerDocument-> saveXML($ result)); – insanebits

+0

你可能在尋找:[PHP的DomDocument中的innerHTML?](http://stackoverflow.com/q/2087103/367456) – hakre

回答

2

嘿,我沒有類似的東西了一段時間後和這個職位讓我:

PHP DOMDocument/XPath: Get HTML-text and surrounded tags

實在是有點在你的代碼的開銷,我的意思是,如果你想(像我一樣),它可以解決在不同的XPath查詢或東西一條線......

希望它幫助

+0

嗯,我想沒有比你顯示的簡單的出路。 –

0

DOM文檔SLOOOOOW

爲什麼你不能用正則表達式來做這件事?

我這樣做:( 「!\ r \ n」, 「」,$內容)

//把一切都在同一行 $內容= preg_replace函數; preg_match(「!(。*?)!」,$ content,$ matches);

以上將搜索,然後需要的一切,直到基於HTML以上,這將工作的第

。但不是如果你在HTML

+0

嗯......是的,稍後我就會想起,你是對的 - 這是解決這個問題的更好方法 - 更簡單,更快捷。 –