2011-09-07 128 views
2
$dom= new DOMDocument('1.0', 'iso-8859-1'); 
    $dom->loadHTML(' <html><body> <strong>SECOND</strong> </body></html>'); 

    $path = new DOMXPath($dom); 

    foreach($path->query('body') as $found){ 
     $found->nodeValue = ' <strong>FIRST</strong> '.$found->nodeValue; 
    } 

var_dump($dom->saveHTML()); //It shows <strong> as "&lt;strong&gt;" 

本示例中的「strong」標籤將在文本中轉換。 其實我需要在那裏添加一個大的HTML代碼。它的格式不太好,稍後會修復。Php - Dom,在節點值中插入HTML_CODE

我該怎麼做?

回答

0
$first = new DOMElement('strong', 'first'); 
$path = new DOMXPath($dom); 

foreach($path->query('body') as $found) 
{ 
    $found->insertBefore($first); 
} 
1

只需使用createCDATASection功能:$found->appendChild($dom->createCDATASection (' <strong>FIRST</strong> '.$found->nodeValue));

1

從這個類似的問題:How to insert HTML to PHP DOMNode?

1)創建一個輔助函數:

private static function __appendHTML($parent, $rawHtml) { 
    $tmpDoc = new DOMDocument(); 
    $tmpDoc->loadHTML($rawHtml); 
    foreach ($tmpDoc->getElementsByTagName('body')->item(0)->childNodes as $node) { 
     $importedNode = $parent->ownerDocument->importNode($node, TRUE); 
     $parent->appendChild($importedNode); 
    } 
} 

2)使用助手插入原始的HTML成元素:

$elem = $domDocument->createElement('div'); 
appendHTML($elem, '<h1>Hello world</h1>'); 
+0

請標記爲重複,而不是發佈一個答案,這只是一個鏈接到另一個問題堆棧溢出。 – ChrisF