php dom получают все атрибуты узла

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

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

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

38
задан alin 5 March 2010 в 10:00
поделиться

2 ответа

Учитывая, что ваш узел является 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;'

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

66
ответ дан 27 November 2019 в 03:42
поделиться

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

 

<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. Он покажет вам выравнивание значений атрибута.

-5
ответ дан 27 November 2019 в 03:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: