есть ли простой способ получить все атрибуты узла, не проверяя, имеет ли он этот атрибут? Короче говоря, вот пример того, что я пытаюсь сделать: у меня этот короткий domdocument:
<p align=center style="font-size: 12px;">some text</p> <a href="#" target="_blank">some link<a/>
okay .. теперь, если я проверил p-тэг с getAttribute ('align'), я получу центральное значение. Это классно, но я хочу посмотреть, есть ли у p-тэга другой атрибут типа, не проверяя для каждого атрибута. на img tag мне нужно будет проверить src, width, height, style, onclick и т. д., чтобы проверить, существуют ли они .. но я думаю, что это может быть более простой способ увидеть все атрибуты.
Учитывая, что у вас есть ваш узел как DOMElement
или DOMNode
, вы можете использовать свойство $ attributes класса DOMNode
: он содержит список атрибутов, которые имеет узел.
Используя это свойство, вы можете перебирать атрибуты, получая имя и значение каждого из них, с их $nodeName
и $nodeValue
.
Например, в вашем случае вы можете использовать что-то вроде этого:
$str = <<<STR <p align=center style="font-size: 12px;">some text</p> <a href="#" target="_blank">some link<a/> STR; $dom = new DOMDocument(); $dom->loadHTML($str); $p = $dom->getElementsByTagName('p')->item(0); if ($p->hasAttributes()) { foreach ($p->attributes as $attr) { $name = $attr->nodeName; $value = $attr->nodeValue; echo "Attribute '$name' :: '$value'<br />"; } }
Что бы вы получили такой вывод:
Attribute 'align' :: 'center' Attribute 'style' :: 'font-size: 12px;'
т.е. мы имеем два атрибута узла, не зная их имен раньше; и для каждого атрибута мы можем получить его имя и его значение.
Используйте этот код, он даст вам указанные атрибуты.
<HTML> <Скрипт> функция test () { ПолучитьЗначение = document.getElementById ( "IID"). GetAttribute ( "выравнивание") alert (getvalue); } </ Скрипт> <Тело> <p id = iid align = "center" background = "red" onclick = "test ();" > Это для тестирования php dom получает все атрибуты узла </ Р> </ Body> </ Html>
Теперь, когда вы нажимаете континент тэга p. Он покажет вам выравнивание значений attirbute.