За последние 24 часа нас посетили 15600 программистов и 1551 робот. Сейчас ищут 874 программиста ...

Создание копии DOM элемента

Тема в разделе "Прочие вопросы по PHP", создана пользователем Uchenik, 27 июл 2014.

  1. Uchenik

    Uchenik Новичок

    С нами с:
    27 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Добрый день.
    Чтобы было понятнее покажу код =)
    Код (Text):
    1. $html->item(0)->childNodes->item(0)->childNodes->item(6)->nodeName;//выводит script
    мне нужно скопировать этот элемент
    в смысле в следующей строке должен стоять такой же.
    делаю так
    Код (Text):
    1. $clone =$html->item(0)->childNodes->item(0)->childNodes->item(6)->cloneNode();
    2. $html->item(0)->childNodes->item(0)->appendChild($clone);
    выводится Maximum execution time of 30 seconds exceeded

    Покажите, пожалуйста пример как правильно копировать элементы?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    What is this? Это вы с использованием какой библиотеки делали?
     
  3. Uchenik

    Uchenik Новичок

    С нами с:
    27 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Дожили...
    Для этого не нужна никакая библиотека. Это встроенная возможность языка =)
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Язык - это язык, построение DOM - это уже задача библиотеки, расширения, как хотите. Оно может быть стандартным, может быть нестандартным. Вот вы через что делали?
     
  5. Uchenik

    Uchenik Новичок

    С нами с:
    27 июл 2014
    Сообщения:
    3
    Симпатии:
    0
    Код (Text):
    1. $dom = new DOMDocument;
    2.     libxml_use_internal_errors(true);
    3.     libxml_clear_errors();
    4.     $dom->loadHTMLFile('путь к файлу');
    5.     $html = $dom->getElementsByTagName('html');
    Код (Text):
    1. $html->item(0)->childNodes->item(0) //это head
    2. $html->item(0)->childNodes->item(1) //это body
    3. $html->item(0)->childNodes->item(0)->childNodes->item(6)  //это <script></script> который и нужно скопировать
    Если переписать код вот так
    Код (Text):
    1. $dom = new DOMDocument;
    2.     libxml_use_internal_errors(true);
    3.     libxml_clear_errors();
    4.     $dom->loadHTMLFile('test.html');
    5.     $html = $dom->getElementsByTagName('html');$k=6;$c=2;
    6.     for($i=0;$i<$c;$i++)
    7.     {$html->item(0)->childNodes->item(0)->appendChild($html->item(0)->childNodes->item(0)->childNodes->item($k)->cloneNode());}
    Но он прекрасно срабатывает. в шаблоне появляется ещё один script, но мне нужно чтобы $k и $c
    были динамическими, т.е. сначала их нужно найти. Для этого я делаю сначала проверку шаблона на существование тега. потом записываю в какой строке он найден и только после этого вызываю метод копирования

    Добавлено спустя 5 минут 11 секунд:
    http://php.ru/manual/book.dom.html