2009-09-17 6 views
0

다음 구조의 테이블이 있습니다. 내가 원하는 데이터를 얻을 수없는 것 같습니다.PHP domdocument를 사용하여 html에서 데이터 추출

<table class="gsborder" cellspacing="0" cellpadding="2" rules="cols" border="1" id="d00"> 
    <tr class="gridItem"> 
     <td>Code</td><td>0adf</td> 
    </tr><tr class="AltItem"> 
     <td>CompanyName</td><td>Some Company</td> 
    </tr><tr class="Item"> 
     <td>Owner</td><td>Jim Jim</td> 
    </tr><tr class="AltItem"> 
     <td>DivisionName</td><td>&nbsp;</td> 
    </tr><tr class="Item"> 
     <td>AddressLine1</td><td>9314 W. SPRING ST.</td> 
    </tr> 
</table> 

이 표는 페이지 내에서 다른 테이블 내에서 중첩 물론이다. DomDocument를 사용하여 예를 들어 "코드"와 "0adf"를 키 값 쌍으로 사용하려면 어떻게해야합니까? 그들은 실제로 핵심 가치 쌍에있을 필요는 없지만 각각 따로 따로 호출 할 수 있어야합니다.

편집 : PHP 간단한 HTML을 사용하여

, 나는 내가 이것을 사용하여 필요한 데이터를 추출 할 수 있었다 :

$foo = $html->getElementById("d00")->childNodes(1)->childNodes(1); 

이하지만 문제는 내가 함께 두 <td></td> 태그를 얻고 있다는 것입니다 내 데이터. 태그가없는 원시 데이터 만 가져 오는 방법이 있습니까?

또한이 테이블에서 데이터를 가져 오는 올바른 방법입니까?

답변

0

DOMDocument를 사용하여 설정하지 않은 경우 PHP Simple HTML DOM Parser을 사용해보세요. 이것은 유효한 XML이 아닌 HTML을 구문 분석 할 수있게 해주는 장점과 구문 분석 된 문서에 더 좋은 인터페이스를 제공합니다.

$html = str_get_html(...); 
foreach($html->find('tr') as $tr) 
{ 
    print 'First td: ' . $tr->find('td', 0)->plaintext; 
    print 'Second td: ' . $tr->find('td', 1)->plaintext; 
} 
+0

안녕 앤드류, 나는 전혀 실제로 설정하고 있지 않다 :

당신은 뭔가를 작성할 수 있습니다. 일부 데이터를 전송할 때만 사용하고 있습니다. 그래서, 지금 내가 일하는 방식은 simplexml로 문서를 가져 오는 것입니다. 나는 str_get_html()이 내용을 잡아낼 것이라고 가정하고있다. 그렇다. –

+0

str_get_html()은 문자열에서 HTML 데이터를 파싱하므로 file_get_html()을 사용하여 파일 또는 URL에서 읽을 수 있으며 simplexml을 전혀 사용하지 않아도됩니까? – Andy

+0

네 .. 이것은 내가 원하는 것을 정확하게 할 것입니다. 감사 앤드류! –

관련 문제