Подтвердить что ты не робот

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 и т.д., чтобы проверить, существуют ли они. Но я думаю, что это может быть более простой способ увидеть все атрибуты.

4b9b3361

Ответ 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.