Получение из HTML узла по его id

agx

Программер :-)
Получение из HTML узла по его id

Я создаю DOMDocument следующим образом:
PHP:
$nd=DOMDocument::loadHTML('<div id="content">HelloWorld</div>');
И хочу получить элемент <div> по его id:
PHP:
$item=$nd->getElementById('content');
Функция возвращает false. Почему так происходит? Может быть, getElementById работает только с XML-документами? В это же время getElementsByTagName работает, возвращает список узлов. Можно, конечно обходить их в цикле и выбрать тот, у которого id="content", но это ведь извращение какое-то...
 

denver

?>Скриптер
Мда-с... действительно изврат, хотя всё по (долбанной) спецификации.

Как извратится написано тут:
http://blog.bitflux.ch/wiki/GetElementById_Pitfalls
(насколько я понял -- проще юзать xml:id="content")

Плюс еще в каментах написана функция с перебором если так уж нужно юзать id="content":
http://php.net/manual/en/function.dom-domdocument-getelementbyid.php

-~{}~ 09.07.06 15:36:

впрочем в мане пишут что перед getElementById нужно юзать:
$nd->validate();

Думаю она должна применять DTD в котором и определяется что id это аттрибут типа ID. Вот только это имхо идиотизм что validate() при вызове пытается загрузить http://www.w3.org/TR/REC-html40/loose.dtd :) кроме того она еще и распарсить его не может. Повбывав бы.
 

agx

Программер :-)
denver
Спасибо, попробую как-нибудь разобраться. :)
 
Сверху