2010-03-05 20 views
30

o özeliği varsa denetlemeden bir düğümün tüm özelliklerini almanın herhangi kolay bir yolu vardır her niteliklerini olsun? kısa, burada ben yapmaya çalışıyorum şeyin bir örnek: ben bu kısa DOMDocument vardır: i getAttribute ('align) ile p etiketi kontrol eğerphp dom bir düğüme

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

tamam .. şimdi alırsınız merkez değer .. bu harika, ama p etiketinin, mümkün olan her özelliği kontrol etmeden stil gibi başka bir özelliğe sahip olup olmadığını görmek istiyorum. etiketi img i .. onlar varsa doğrulamak için .. src, genişlik, yükseklik, stil, onclick, vs kontrol etmek gerekecek ama ben tüm özellikleri görme kolay bir yolu olabilir düşünüyorum.

+3

* (sidenote) * Geçerli bir X (HT) ML belge kök öğesi olması gerekiyor ve tüm nitelikleri tırnak içinde olmak zorunda. – Gordon

+0

* (ipucu) * bu http://de3.php.net/manual/en/book.simplexml.php veya http://simplehtmldom.sourceforge.net/manual.htm daha kolay bulabilir okumak için kesinlikle ise kullanın. – Gordon

cevap

-4

bu kodu kullanın, bu size belirtilen nitelikleri verecektir.

 

<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> 

Şimdi p etiketinin conent tıkladığınızda. Bu size attirbute değerlerini hizalayacaktır. Size düşünüldüğünde

+6

Soru, PHP değil, JavaScript olarak etiketlenmiştir, bu yüzden OP muhtemelen bu sunucu tarafını yapmak ister. – Gordon

+0

Bu, öğeye tıklandığında align niteliğinin değerini göstermez mi? –

+0

@Gordon: İyi nokta. @alin: Etiketleri açıklığa kavuşturabilir misiniz? –

53

Eğer DOMNode sınıfının $attributes özelliğini kullanabilir, DOMElement veya DOMNode bir gibi düğüm vardır: o düğüm vardır niteliklerin bir listesini içerir.

Bu özelliği kullanarak, $nodeName ve $nodeValue özellikleriyle özniteliklerin üstesinden gelebilir, her birinin adını ve değerini alabilirsiniz. Size çıkış bu tür alacağı


$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;' 

yani biz iki tane var


Örneğin, sizin durumunuzda, böyle bir şey kullanabilirsiniz daha önce isimlerini bilmeden düğümün nitelikleri; ve her bir özellik için ismini ve değerini elde edebiliriz.

+1

teşekkürler. Bu harika çalışıyor. Özelliklerin farkında değildim – alin

+1

Rica ederim :-) İyi eğlenceler! –

+1

Bu çok havalı. Belirli özellikleri bulmak için bunu nasıl değiştirebileceğimi biliyor musunuz? Herhangi bir nedenle getAttribute bozuldu .. – EllaJo

İlgili konular