2013-05-16 122 views
1

我想追加一些文本到divs,它具有相同的类。需要帮助PHP domDocument

$dom = new DOMdocument(); 
$dom->formatOutput = true; 

@$dom->loadHTMLFile('first.html');  
$xpath = new DOMXPath($dom) 

$after = new DOMText('Newly appended text'); 

$elements = $xpath->query('//div[@class="mix"]'); 

foreach($elements as $element) 

    { 

     $element->appendChild($after);  
     //echo $dom->saveHTML(); 
    } 

$dom->saveHTMLFile('first.html'); 

但是,当我打开first.html时,附加文本只附加到上面的类的最后一个div。 如果我取消注释saveHTML(),那么它显示完美的结果。保存后问题。

回答

2

您不能将相同的DOM节点追加到树中的多个点,这就是您在这里所做的。您需要每次创建一个单独的节点(但是完全相同):

foreach($elements as $element) 
{ 
    $after = new DOMText('Newly appended text'); // moved this inside the loop 
    $element->appendChild($after); 
} 
+0

这真是太好了,谢谢。 –

+0

嗨@Jon,你能告诉我如何附加任何随机的html代码吗?例如,$ after = new DOMText('

append
'); 或$ after = new DOMText(''); 内容将是正常的文本或HTML甚至PHP脚本。 –

+0

@AmitS:看到http://stackoverflow.com/questions/4751437/php-dom-append-source-html-to-a-domelement – Jon