php dom получает все атрибуты узла - PullRequest
37 голосов
/ 05 марта 2010

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

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

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

Ответы [ 2 ]

64 голосов
/ 05 марта 2010

Учитывая, что ваш узел имеет вид DOMElement или DOMNode, вы можете использовать свойство $ attribute класса 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;'

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

0 голосов
/ 05 марта 2010

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


<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 значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...