Php dom получает все атрибуты node

Есть ли простой способ получить все атрибуты node, не проверяя, имеет ли он этот атрибут? Короче, вот пример того, что я пытаюсь сделать: У меня есть этот короткий domdocument:

<p align=center style="font-size: 12px;">some text</p>
<a href="#" target="_blank">some link<a/>

okay.. теперь, если я проверил p-тэг с getAttribute ('align'), я получу центральное значение.. это круто, но я хочу посмотреть, есть ли у p-тега еще один атрибут типа style, не проверяя для каждого атрибута возможное. на img tag мне нужно будет проверить src, width, height, style, onclick и т.д., чтобы проверить, существуют ли они. Но я думаю, что это может быть более простой способ увидеть все атрибуты.

Ответ 1

Учитывая, что у вас есть node как DOMElement или DOMNode, вы можете использовать свойство $attributes свойства DOMNode class: он содержит список атрибутов, которые имеет node.

Используя это свойство, вы можете перебирать атрибуты, получая имя и значение каждого из них, с их свойствами $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;'

то есть. мы имеем два атрибута node, не зная их имен раньше; и для каждого атрибута мы можем получить его имя и его значение.

Ответ 2

Используйте этот код, он предоставит вам указанные атрибуты.

 

<html>
<script>
function test()
{
getvalue=document.getElementById("iid").getAttribute("align")
alert ( getvalue) ;
}
</script>

<body>
<p id=iid align="center" background="red" onclick="test();" >
This is for testing
php dom get all attributes of a node
</p>
</body>
</html>

Теперь, когда вы нажимаете континент тэга p. Он покажет вам выравнивание значений attirbute.