2011-06-27 42 views
5

我有一個div在PHP(字符串),我想要的內容。我怎樣才能得到一個div的內容在PHP

例如:

<div id="product_list" style="width:100%; float:none;"> 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
</div> 

,我想

<div> 
    bla bla bla 
</div> 
    bla bla 

的風格正在發生變化,我只知道DIV ID。

修訂

這是我的代碼,相同turbod源和結果都是一樣的了。

所以這是原來的html

$doc = new DOMDocument(); 
$doc->loadHTML($buffer); 
$id = $doc->getElementById('product_list') 

而且這個代碼後,我得到如下:link

+0

我是正確,在你的「更新」的最後一行代碼聲明'$ id'應該用分號的跟隨PHP的語法? – HelpingHand

回答

16

使用PHP DOMDocument類。 http://www.php.net/manual/en/class.domdocument.php

$dom = new DOMDocument(); 

$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divContent = $xpath->query('//div[id="product_list"]'); 
+0

運行您在此處粘貼的代碼是否需要任何外部庫?我問這是因爲代碼似乎不能直接在我的服務器上工作。 – HelpingHand

+0

不,但需要libxml PHP擴展。 http://www.php.net/manual/en/dom.requirements.php檢查你的phpinfo()。你有任何錯誤信息? – turbod

1

要保存一個XML/HTML片段,你需要保存每個子節點:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$result = ''; 
foreach($xpath->evaluate('//div[@id="product_list"]/node()') as $childNode) { 
    $result .= $dom->saveHtml($childNode); 
} 
var_dump($result); 

輸出:

string(74) " 
     <div> 
     bla bla bla 
     </div> 
     bla bla   
" 

如果你只需要文本內容,就可以直接取回:

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
var_dump(
    $xpath->evaluate('string(//div[@id="product_list"])') 
); 

輸出:

string(63) " 

     bla bla bla 

     bla bla   
" 
-1

是不是足夠做......

$id->nodeValue