2011-05-30 157 views
2
<?php 
    libxml_use_internal_errors(true); 
    $html = ' 
<html> 
<body> 
    <div> 
     Message <b>bold</b>, <s>strike</s> 
    </div> 
    <div> 
     <span class="how"> 
      <a href="link" title="text">Link</a>, <b> BOLD </b> 
     </span> 
    </div> 
</body> 
</html> 
    '; 
    $dom = new DOMDocument(); 
    $dom->preserveWhiteSpace = false; 
    $dom->strictErrorChecking = false; 
    $dom->recover = true; 
    $dom->loadHTML($html); 

    $xpath = new DOMXPath($dom); 
    $messages = $xpath->query("//div"); 
    foreach($messages as $message) 
    { 
     echo $message->nodeValue; 
    } 

此代碼返回「消息大膽,擊鏈接,大膽」不包含HTML標籤......PHP XPath。如何使用html標籤返回字符串?

我想輸出下面的代碼:

Message <b>bold</b>, <s>strike</s> 

<span class="how"> 
    <a href="link" title="text">Link</a>, <b> BOLD </b> 
</span> 

你能幫助我嗎?

+2

可能PHP的DomDocument中的[innerHTML?]的副本(http://stackoverflow.com/questions/2087103/innerhtml-in-phps-domdocument) – Gordon 2011-05-30 15:14:04

回答

0

我可以用SimpleXML真的很快(如果它的好讓你從DOM文檔和DOMXPath開關,也許你會與我的解決方案去)做到這一點:

$html = ' 
<html> 
<body> 
    <div> 
     Message <b>bold</b>, <s>strike</s> 
    </div> 
    <div> 
     <span class="how"> 
      <a href="link" title="text">Link</a>, <b> BOLD </b> 
     </span> 
    </div> 
</body> 
</html> 
    '; 
    $xml = simplexml_load_string($html); 
    $arr = $xml->xpath('//div/*'); 
    foreach ($arr as $x) { 
     echo $x->asXML(); 
    } 
0
$dom = new DOMDocument; 
foreach($messages as $message) 
{ 
    echo $dom->saveHTML($message); 
} 

使用saveHTML()

相關問題