есть ли простой способ получить все атрибуты узла, не проверяя, имеет ли он этот атрибут? Короче говоря, вот пример того, что я пытаюсь сделать: у меня этот короткий 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.