2011-09-07 46 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