2011-06-27 108 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 
相关问题