Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: dom_xml

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
BlackHacker
Отправлено: 12 Октября, 2010 - 17:50:06
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Если делаю не правильно, тыкните носом..

PHP:
скопировать код в буфер обмена
  1. function editcontent($file, $array){
  2.   $xmlstr = join('', file($file));
  3.   if(!$dom = domxml_open_mem($xmlstr))
  4.     exit;
  5.   $root = $dom->document_element();
  6.   $content = $root->child_nodes();
  7.   foreach($content as $news)
  8.   {
  9.     if ($news->tagname == 'news')
  10.     {
  11.       $currentnews = $news->get_attribute('id');
  12.   if ($currentnews == $array["id"] ){
  13.       $news_info = $news->child_nodes();
  14.   foreach ($news_info as $child)
  15.   {
  16.         if ($child->tagname == "link") $child->set_content($array["link"]);
  17.         if ($child->tagname == "rating") $child->set_content($array["rating"]);
  18.         if ($child->tagname == "title") $child->set_content($array["title"]);
  19. }
  20. }
  21. }
  22. }
  23.   $xmlfile = $dom->dump_mem(true);
  24.   $h = fopen($file,"w");
  25.   if (!fwrite($h, $xmlfile))
  26.   {
  27. return('error');
  28.     exit;
  29.   }
  30. };



текст в тегах $child не заменяется, а добавляется.. функцию писал сам, так что возможны ошибки..

(Отредактировано автором: 12 Октября, 2010 - 17:51:45)

 
 Top
BlackHacker
Отправлено: 13 Октября, 2010 - 14:24:23
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Не дождавшись ответа, решил проблему сам..

Если кому интересно, в PHP 5 баг с заменой контента в тегах, и он просто добавляется.. Нашел функцию, с помощью которой это решается..

PHP:
скопировать код в буфер обмена
  1. function replace_content( &$node, &$new_content )
  2. {
  3.     $dom =& $node->owner_document();
  4.    
  5.     $newnode =& $dom->create_element( $node->tagname );
  6.  
  7.     $newnode->set_content( $new_content );
  8.    
  9.     $atts =& $node->attributes();
  10.     $node->replace_node( $newnode );
  11. };


P.S. Тему можно закрыть

(Отредактировано автором: 13 Октября, 2010 - 14:26:39)

 
 Top
JustUserR
Отправлено: 15 Октября, 2010 - 11:58:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




BlackHacker пишет:
Если кому интересно, в PHP 5 баг с заменой контента в тегах, и он просто добавляется.. Нашел функцию, с помощью которой это решается
Фактически в интерпретаторе PHP версии 5 все сложные информационные объекты представлены в виде ссылок в локальном контексте и таким образом создание явных символических ссылок на них не является необходимым - в то же время при переопределении операций get и set возможно добавление непосредственного обращения к clone-функции - таким образом для решения указанного вами вопроса скорее всего возможно использовать переопределение get/set-функций в оригинальном классе


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB