2010-03-05 6 views
30

노드의 속성을 확인하지 않고 노드의 모든 속성을 가져 오는 쉬운 방법이 있습니까? 짧은, 여기에 내가 할 노력하고있어의 예 : 내가이 짧은 DOMDocument를 가지고 : 내가 대해 getAttribute ('정렬')와 p 태그를 확인하는 경우php dom 노드의 모든 속성을 가져옵니다

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

좋아 ... 지금은를 얻을 수 있습니다를 멋지 네요.하지만 p 태그가 가능한 모든 속성을 확인하지 않고 스타일과 같은 또 다른 속성을 갖고 있는지 확인하고 싶습니다. img 태그에 나는 src, 너비, 높이, 스타일, onclick 등등을 확인해야합니다. 그들이 존재하는지 확인하려면 ..하지만 모든 속성을 보는 더 쉬운 방법이라고 생각합니다.

+3

* (사이드 노트) * 유효한 X (HT) ML 문서에는 루트 요소가 있어야하며 모든 속성은 따옴표로 묶어야합니다. – Gordon

+0

* (힌트) * 읽기 전용이지만 http://de3.php.net/manual/en/book.simplexml.php 또는 http://simplehtmldom.sourceforge.net/manual.htm을보다 쉽게 ​​찾을 수 있습니다. 용도. – Gordon

답변

-4

이 코드를 사용하면 지정된 속성이 제공됩니다.

 

<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 태그의 conent을 클릭합니다. attirbute 값을 정렬하는 방법을 보여줍니다. 당신을 고려

+6

질문은 JavaScript가 아니라 PHP로 태그 지정되어 있으므로 OP가이 서버 측을 처리하려고합니다. – Gordon

+0

요소를 클릭 할 때 align 속성 값을 표시하지 않습니까? –

+0

@Gordon : 좋은 장소. @alin : 태그를 명확히하고 (경우에 따라) 조정할 수 있습니까? –

53

당신이 DOMNode 클래스의 $attributes 속성을 사용할 수 있습니다, DOMElement 또는 DOMNode A와 노드를 가지고 :이 노드가 가지고있는 속성의 목록이 포함되어 있습니다.

해당 속성을 사용하면 각 속성의 이름과 값을 $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;' 

즉 우리는 두 가지를


는 예를 들어, 귀하의 경우, 다음과 같이 사용할 수 있습니다 이전에 이름을 모른 채 노드의 속성. 각 속성에 대해 이름과 값을 얻을 수 있습니다.

+1

덕분에 작동합니다. 이것은 훌륭하게 작동합니다. 나는 속성 속성을 알지 못했습니다. – alin

+1

당신은 환영합니다 :-) 재미있게 보내세요! –

+1

매우 시원합니다. 이 속성을 수정하여 특정 속성을 찾는 방법을 알고 있습니까? 어떤 이유로 getAttribute가 깨졌습니다. – EllaJo

관련 문제