Intereting Posts

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

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

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

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

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

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

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

 

 <HTML>
 <Скрипт>
 функция test ()
 {
 ПолучитьЗначение = document.getElementById ( "IID"). GetAttribute ( "выравнивание")
 alert (getvalue);
 }
 </ Скрипт>

 <Тело>
 <p id = iid align = "center" background = "red" onclick = "test ();"  >
 Это для тестирования
 php dom получает все атрибуты узла
 </ Р>
 </ Body>
 </ Html>

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