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.