2013-10-31 1 views
0

PHP에서 SimpleHTMLDom 라이브러리를 사용하고 있으며 HTML 데이터에서 노드를 가져올 수 있습니다.PHP에서 DOM을 사용하여 HTML에서 특정 태그를 트래버스하고 가져 오는 방법은 무엇입니까?

<html> 
<body> 
<table> 
<tr> 
<td>One</td> 
<td>Two</td> 
<td>Three</td> 
</tr> 
</table> 
</body> 
<html> 

와 나는 같은 구문 분석 코드를 사용하고 있습니다 : 예를 들어 나는 아래와 같이 HTML 데이터를

foreach($html->find('td') as $element) 
echo $element->plaintext . '<br>'; 

그러나이 코드는 다음과 같이 결과를 제공합니다

One<br/> 
Two<br/> 
Three<br/> 

내가 뭘 원하는 것은 변수 $ 1에 "One", 결과 2에 $ 2, $ 3에 "Three"가 결과를 원한다는 것입니다. 문제는 특정 변수에서 특정 테이블 열 요소를 가져 오는 방법입니다. ID 나 수업과 관계없이 트래버스하고 싶습니다. 마찬가지로 HTML 데이터에 태그가 세 번째로 나타나기를 원합니다. 감사. SIMPLEHTMLDOM.sourceforge.com 설명서를 이해할 수 없습니다. 인덱스 요소의 :

답변

2

find() 방법은 두 번째 옵션 매개 변수를 수용한다.

echo $html->find('td', 2); 

출력 :

NB1 : 인덱스가 설정되는 경우, 상기 제 N 원소 객체를 반환 달리, 오브젝트의 배열을 반환한다.

NB2는 :

$elements = $html->find('td'); 
echo $elements[2]; 

: 매개 변수 기반 제로, 그것은 첫 번째 요소의 인덱스가 0

당신은 또한 당신의 요소에 액세스 할 배열을 사용할 수 있음을 의미합니다 출력 :

문서 : http://simplehtmldom.sourceforge.net/manual_api.htm

+0

고마워요. 이것은 정확하게 내가 찾고 있었던 것입니다. 또한 수동 api 링크를 주셔서 감사합니다 :) – devutkarsh

1
echo getElementByIndex(3); //whatever element you are looking for. 

function getElementByIndex($indexOfElement) { 
    $i = 1; //or 0 depending on starting list index 
    foreach($html->find('td') as $element) { 
     $i++; 
     if ($i == $indexOfElement) 
     return $element->plaintext . '<br>'; 
    } 
} 
+0

감사하지만 문제는
태그 라인의 끝이 필요하지 않을 수 없습니다. 내 문제는 코드에 너무 많은 태그가있을 때 특정 값을 얻는 방법입니다. 마찬가지로 3 태그가 있지만 난 단지 태그의 가치를 원한다. – devutkarsh

+0

어쩌면 내가 가져온 태그 값을 PHP 배열에 저장해야합니다. 나 해보자. – devutkarsh

+0

감사합니다. 그러나 find ('tag', index)가 작업을 수행했습니다. – devutkarsh