Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> getElementById по вставленным веткам 
:(
    Опции темы
NTMan
Дата 19.6.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 3.7.2007
Где: Уфа

Репутация: нет
Всего: нет



День добрый!
Суть проблемы такова, что есть html файл и массив с id-шками и html-кусками которые надо вставить в html файл.
getElementById прекрасно находит узлы по Id-шкам в первоначальном файле, но пасует, когда дело касается вставленных узлов.
Продемонстрирую это примером:
Код

<?php
$pagecode = <<<EOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta content='text/html; charset=windows-1251' http-equiv='Content-Type'>
</HEAD>
<BODY>
<H1>Это просто пример статичной части</H1>
<div id='dyn1'><u>Начинается динамика здесь!</u></div>
</BODY>
</HTML>
EOT;

$htmlarr["dyn1"] = iconv('windows-1251', 'UTF-8','Это <div id="dyn2"></div>первый блок');
$htmlarr["dyn2"] = iconv('windows-1251', 'UTF-8','уже не ');
$doc = new DOMDocument('1.0', 'WINDOWS-1251');
$doc->validateOnParse = true;
$doc->loadHTML($pagecode);
foreach ($htmlarr as $divid => $htmlcode)
{
    $ChangeNode = $doc->getElementById($divid);
    if (isset($ChangeNode))
    {
        $f = $doc->createDocumentFragment();
        $f->appendXML($htmlcode);
        $ChangeNode->appendChild($f);

    }
}
echo $doc->saveHTML();
?>


В результате выполнения в div с id='dyn1' подставиться "Это <div id="dyn2"></div>первый блок", а в 'dyn2' ничего не подставиться, хотя по логике вещей должно было бы.

Вопросы:
1) как сделать чтобы, в 'dyn2' подставилось "уже не "??
2) Если не указать заголовок "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">" то getElementById вообще не работает, есть ли возможность этого избежать? Т.е. сделать getElementById толерантным ко всяким заголовкам.


Это сообщение отредактировал(а) NTMan - 19.6.2008, 17:25
PM MAIL ICQ   Вверх
pgood
Дата 21.7.2008, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 7.3.2005

Репутация: нет
Всего: нет



Попробуй xpath вместо getElementById;

Если не вкурсе, вот аналог getElementById:

Код


$xpc = new DOMXPath($doc); //где $doc - DOMDocument

$result = $xpc->query('//*[@id="айди элемента"]');

$element = $result->item(0);





PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0385 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.