2013-05-16 4 views
1

Я хочу добавить некоторый текст в div, который имеет тот же класс.Нужна помощь по 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 = новый DOMText ('

append
'); или $ after = new DOMText (''); Контент будет обычным текстом или html или даже скриптом php. –

+0

@AmitS: см. Http://stackoverflow.com/questions/4751437/php-dom-append-source-html-to-a-domelement – Jon

Смежные вопросы